首页 > 解决方案 > 如何每行仅合并一次数据框

问题描述

抱歉,我对这一切都很陌生,所以请原谅我可能提出的任何愚蠢问题。

我正在尝试使用熊猫合并来自salesforce的一些报告,

我有两个报告:

劳工报告工厂报告

并想制作: 综合报告

我尝试合并、连接和对齐数据框,但是,因为两者共享相同的索引,我的工厂报告的第一行重复了 5 次,即:

错误合并报告

我的下一个想法是使用 .align(),然后使用 .duplicated() 返回一个布尔系列,显示哪些行重复,并清除重复行的内容。如果我要使用这种方法,我怎么能清除一行的内容?

此外,这似乎效率低下且难以做到,还有更优雅的解决方案吗?

干杯

标签: pythonpandasdata-wrangling

解决方案


假设您的最终结果不需要重复的“DJR 编号”列。我们可以根据 DJR Number 加入两个 Dataframe。Duplicated 函数将返回一系列关于它们是否重复的布尔值。如果它们为 True,我们将为其分配 null 值。

merged = labour.merge(plant,on='DJR Number')
merged.loc[merged['DJR Number'].duplicated(),['Date_y','Foreman_y','Plant','Plant Hours']] = np.NaN

如果您想要更清晰的结果,请改为合并三列。

merged = labour.merge(plant,on=['DJR Number','Date','Foreman'])
merged.loc[merged['DJR Number'].duplicated(),['Plant','Plant Hours']] = np.NaN

这不会导致任何重复的列。

请参阅Pandas Duplicated以获取文档。


推荐阅读