当列具有相同的名称时,有没有办法在 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
在四重 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