Python 熊猫:在列值重复的列上连接或合并多个数据帧

Python 熊猫:在列值重复的列上连接或合并多个数据帧,python,pandas,Python,Pandas,我有三个行数超过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,122

我有三个行数超过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')
需要很长时间。一个原因是重复设备ID的值

我知道
reduce
方法,但我怀疑它可能导致同样的情况


有没有更好、更有效的方法?

要获得您想要的结果,您可以使用以下方法:

result = pd.concat([df_1.drop('Device_ID', axis=1),df_2.drop('Device_ID',axis=1),df_3],axis=1).set_index('Device_ID')

如果不想使用
设备\u ID
作为索引,可以删除代码的
设置\u索引部分。另外,请注意,由于在最终数据帧的某些列(列A和列B)中存在NaN,Pandas会将非缺失值转换为浮点数,因为NaN不能存储在整数数组中(除非您使用的是Pandas版本0.24,在这种情况下,您可以阅读更多信息)。

要获得所需结果,您可以使用以下方法:

result = pd.concat([df_1.drop('Device_ID', axis=1),df_2.drop('Device_ID',axis=1),df_3],axis=1).set_index('Device_ID')

如果不想使用
设备\u ID
作为索引,可以删除代码的
设置\u索引部分。另外,请注意,由于在最终数据帧的某些列(列A和列B)中存在NaN,Pandas会将非缺失值转换为浮点数,因为NaN不能存储在整数数组中(除非您有Pandas版本0.24,在这种情况下,您可以阅读更多有关它的信息)。

键的重复程度如何?您可能正在生成一个具有重叠键的三重合并的海量数据帧,可能会生成数万亿行,如果不是更多的话。那么您有什么建议?我应该使用
groupby
,然后使用
merge
?请提供您试图实现的输出示例。您希望如何处理这些重复的值?键的重复程度是否可能重复?您可能正在生成一个具有重叠键的三重合并的海量数据帧,可能会生成数万亿行,如果不是更多的话。那么您有什么建议?我应该使用
groupby
,然后使用
merge
?请提供您试图实现的输出示例。您希望如何处理这些重复值?的可能重复