gpt4 book ai didi

python - 与重复索引合并 - 行数大于预期

转载 作者:行者123 更新时间:2023-12-01 08:22:57 25 4
gpt4 key购买 nike

我有两个带有一些重复索引的数据框

df1 = pd.DataFrame(np.random.randn(5, 3), columns=['A', 'B', 'C'], index=['I1', 'I1' ,'I1', 'I2', 'I2'])
df2 = pd.DataFrame(np.random.randn(4, 3), columns=['D', 'E', 'F'], index=['I1', 'I1', 'I1', 'I2'])

pd.merge(df1, df2, how='left', left_index=True, right_index=True)

pandas 似乎无法识别两个索引具有相同的值。我预计数据框必须有 5 行,列为 A B C D E F。最后一行全部为 D E F

nans

类似这样的事情:

        A         B         C         D         E         F
I1 0.121993 0.208368 -0.056375 0.492218 -0.915034 1.667015
I1 0.121993 0.208368 -0.056375 -0.055575 -0.207215 -0.351027
I1 0.121993 0.208368 -0.056375 1.128143 1.371022 0.810542
I2 -0.817558 1.599293 -0.342841 -0.831796 -0.118316 -0.138027
I2 -0.817558 1.599293 -0.342841 NaN NaN NaN

相反,我得到了这个:

          A         B         C         D         E         F
I1 0.121993 0.208368 -0.056375 0.492218 -0.915034 1.667015
I1 0.121993 0.208368 -0.056375 -0.055575 -0.207215 -0.351027
I1 0.121993 0.208368 -0.056375 1.128143 1.371022 0.810542
I1 0.403085 0.532958 0.856544 0.492218 -0.915034 1.667015
I1 0.403085 0.532958 0.856544 -0.055575 -0.207215 -0.351027
I1 0.403085 0.532958 0.856544 1.128143 1.371022 0.810542
I1 0.094214 -0.527932 -1.368606 0.492218 -0.915034 1.667015
I1 0.094214 -0.527932 -1.368606 -0.055575 -0.207215 -0.351027
I1 0.094214 -0.527932 -1.368606 1.128143 1.371022 0.810542
I2 0.378565 0.331995 0.167682 -0.831796 -0.118316 -0.138027
I2 0.378565 0.331995 0.167682 -0.561473 -0.898151 -0.217683
I2 -0.817558 1.599293 -0.342841 -0.831796 -0.118316 -0.138027
I2 -0.817558 1.599293 -0.342841 -0.561473 -0.898151 -0.217683

编辑:我无法对结果进行重复数据删除,因为我不想丢失原始数据帧中的重复行

最佳答案

使用pd.concat()加入同一索引:

pd.concat([df2,df1],axis=1)

A B C D E F
I1 0.112906 -1.080809 0.857712 -0.849395 0.015475 0.619177
I1 -0.380070 1.389495 1.372172 -0.472603 -0.593138 -0.594146
I1 -0.258423 1.402873 -0.923191 -2.138440 0.099878 0.148920
I2 -1.618755 -0.459908 -0.803290 -0.267760 0.275084 0.810870
I2 -0.033210 0.523840 -1.028478 -1.300269 -1.516137 0.373555

编辑:

pd.concat([df1.reset_index(drop=True), df2.reset_index(drop=True)],axis=1).set_index(df1.index)

A B C D E F
I1 1.925637 0.082031 0.483414 -0.189940 0.763408 -0.346046
I1 -0.676511 0.482327 1.648381 2.635290 -0.080474 0.558633
I1 0.180004 -0.190909 0.821891 -1.010627 0.774914 0.988356
I2 -0.011089 0.364400 -0.207062 -1.335626 0.036884 1.628115
I2 -1.314910 0.294986 0.334418 NaN NaN NaN

关于python - 与重复索引合并 - 行数大于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54505260/

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