gpt4 book ai didi

python - Pandas 连接交替列

转载 作者:太空狗 更新时间:2023-10-30 01:50:31 24 4
gpt4 key购买 nike

我有两个数据框如下:

df2 = pd.DataFrame(np.random.randn(5,2),columns=['A','C'])
df3 = pd.DataFrame(np.random.randn(5,2),columns=['B','D'])

我希望以交替方式获取列,以便得到以下结果:

df4 = pd.DataFrame()
for i in range(len(df2.columns)):
df4[df2.columns[i]]=df2[df2.columns[i]]
df4[df3.columns[i]]=df3[df3.columns[i]]

df4

A B C D
0 1.056889 0.494769 0.588765 0.846133
1 1.536102 2.015574 -1.279769 -0.378024
2 -0.097357 -0.886320 0.713624 -1.055808
3 -0.269585 -0.512070 0.755534 0.855884
4 -2.691672 -0.597245 1.023647 0.278428

我认为我对这个解决方案的效率真的很低。执行此操作的更多 pythonic/pandic 方法是什么?

附注在我的特定情况下,列名不是 A、B、C、D,也没有按字母顺序排列。只是知道我想合并哪两个数据框。

最佳答案

如果你需要更动态的东西,首先压缩两个 DataFrame 的两个列名称,然后将其扁平化:

df5 = pd.concat([df2, df3], axis=1)
print (df5)
A C B D
0 0.874226 -0.764478 1.022128 -1.209092
1 1.411708 -0.395135 -0.223004 0.124689
2 1.515223 -2.184020 0.316079 -0.137779
3 -0.554961 -0.149091 0.179390 -1.109159
4 0.666985 1.879810 0.406585 0.208084

#http://stackoverflow.com/a/10636583/2901002
print (list(sum(zip(df2.columns, df3.columns), ())))
['A', 'B', 'C', 'D']
print (df5[list(sum(zip(df2.columns, df3.columns), ()))])
A B C D
0 0.874226 1.022128 -0.764478 -1.209092
1 1.411708 -0.223004 -0.395135 0.124689
2 1.515223 0.316079 -2.184020 -0.137779
3 -0.554961 0.179390 -0.149091 -1.109159
4 0.666985 0.406585 1.879810 0.208084

关于python - Pandas 连接交替列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38582356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com