当列具有相同的名称时,有没有办法在 DataFrame 中添加新行?

Is there a way to add a new row in a DataFrame when columns have the same name?

在四重 for 循环之后,很长很混乱,我得到这样的结果:

ETH-BNB     ETH-BNB     ETH-DOGE     ETH-DOGE     LTC-BTC     LTC-DOGE     LTC-XMR     LTC-XMR  
868.706    2724.619     1207.112     3615.28      278.007     161.565      84.9219     126.234

我想要的是这样的:

ETH-BNB     ETH-DOGE     LTC-BTC     LTC-DOGE     LTC-XMR
868.706     1207.112     278.007     161.565      84.9219
2724.619    3615.28        NAN         NAN        126.234
 

有什么办法可以实现吗?

提前致谢

“四重 for 循环”听起来您可能会重新考虑如何构建数据框,但无论哪种方式,它都有效:

df_merged = df.groupby(level=0, axis=1).apply(lambda x:x.T.reset_index(drop=True)).droplevel(1, axis=1)

df.groupby(level=0, axis=0) 将具有相同列名的段分组,例如

   ETH-BNB   ETH-BNB
0  868.706  2724.619

lambda x:x.T.reset_index(drop=True) 然后将每个组堆叠成这样:

          0
0   868.706
1  2724.619

结果是一个看起来几乎正确的数据框:

    ETH-BNB  ETH-DOGE  LTC-BTC LTC-DOGE  LTC-XMR
          0         0        0        0        0
0   868.706  1207.112  278.007  161.565  84.9219
1  2724.619   3615.28      NaN      NaN  126.234

最后,我们只需要去除列中的MultiIndex,这是通过最后一步实现的,.droplevel(1, axis=1),导致:

    ETH-BNB  ETH-DOGE  LTC-BTC LTC-DOGE  LTC-XMR
0   868.706  1207.112  278.007  161.565  84.9219
1  2724.619   3615.28      NaN      NaN  126.234