I've got the next code:
data = [{'TpoMoneda': 'UYU'}, {'MntNetoIvaTasaMin': '3825.44'}, {'IVATasaMin': '10.000'}, {'IVATasaBasica': '22.000'}, {'MntIVATasaMin': '382.54'}, {'MntTotal': '4207.98'}, {'MntTotRetenido': '133.90'}, {'CantLinDet': '2'}, {'RetencPercep': None}, {'RetencPercep': None}, {'MontoNF': '0.12'}, {'MntPagar': '4342.00'}]
df = pd.DataFrame.from_dict(data, orient = 'columns')
My dataframe looks like this:
# TpoMoneda MntNetoIvaTasaMin IVATasaMin ... RetencPercep MontoNF MntPagar
# 0 UYU NaN NaN ... NaN NaN NaN
# 1 NaN 3825.44 NaN ... NaN NaN NaN
# 2 NaN NaN 10.000 ... NaN NaN NaN
# 3 NaN NaN NaN ... NaN NaN NaN
# 4 NaN NaN NaN ... NaN NaN NaN
# 5 NaN NaN NaN ... NaN NaN NaN
# 6 NaN NaN NaN ... NaN NaN NaN
# 7 NaN NaN NaN ... NaN NaN NaN
# 8 NaN NaN NaN ... NaN NaN NaN
# 9 NaN NaN NaN ... NaN NaN NaN
# 10 NaN NaN NaN ... NaN 0.12 NaN
# 11 NaN NaN NaN ... NaN NaN 4342.00
#
# [12 rows x 11 columns]
# TpoMoneda MntNetoIvaTasaMin IvaTasaMin ... RetencPercep MontoNF MntPagar
# 0 UYU 3825.44 10.000 Nan 0.12 4342.00
#
# [1 rows x 11 columns]
Despite I don´t speak english very well, I´m open to trying understand all the solutions someone can give me. Thank all!
You can use map
+ pd.transpose
like below
pd.DataFrame(
map(lambda x: df[x].dropna().values, df.columns), index=df.columns
).transpose()
which gives
TpoMoneda MntNetoIvaTasaMin IVATasaMin IVATasaBasica MntIVATasaMin MntTotal \
0 UYU 3825.44 10.000 22.000 382.54 4207.98
MntTotRetenido CantLinDet RetencPercep MontoNF MntPagar
0 133.90 2 None 0.12 4342.00
Or, you can try pd.aggregate
like below
pd.DataFrame(
df.agg(lambda x: x.dropna().values[0] if any(~x.isna()) else np.nan, axis=0)
).transpose()
which gives
TpoMoneda MntNetoIvaTasaMin IVATasaMin IVATasaBasica MntIVATasaMin MntTotal \
0 UYU 3825.44 10.000 22.000 382.54 4207.98
MntTotRetenido CantLinDet RetencPercep MontoNF MntPagar
0 133.90 2 NaN 0.12 4342.00