【发布时间】:2019-07-31 02:00:37
【问题描述】:
我有三个数据帧,行数超过 71K。以下是样本。
df_1 = pd.DataFrame({'Device_ID':[1001,1034,1223,1001],'Col_A':[45,56,78,33]})
df_2 = pd.DataFrame({'Device_ID':[1001,1034,1223,1001,1887],'Col_B':[35,46,78,33,66]})
df_3 = pd.DataFrame({'Device_ID':[1001,1034,1223,1001,1887,1223],'Col_C':[5,14,8,13,16,8]})
编辑 如建议的那样,以下是我想要的输出
df_final
Device_ID Col_A Col_B Col_C
1001 45 35 5
1034 56 46 14
1223 78 78 8
1001 33 33 13
1887 Nan 66 16
1223 NaN NaN 8
使用pd.merge() 或df_1.set_index('Device_ID').join([df_2.set_index('Device_ID'),df_3.set_index('Device_ID')],on='Device_ID') 时会花费很长时间。一个原因是重复 Device_ID 的值。
我知道reduce 方法,但我怀疑它可能会导致同样的情况。
有没有更好更有效的方法?
【问题讨论】:
-
密钥的重复程度如何?您可能会生成一个带有重叠键的三重合并的大型 DataFrame,如果不是更多的话,可能会生成数万亿行。
-
那你有什么建议?我应该使用
groupby然后merge? -
请提供您尝试实现的输出示例。您想如何处理这些重复值?