我正在寻找一种方法来删除基于特定列子集的重复行,但合并一些数据,因此它不会被删除。
import pandas as pd
# Example Dataframe
data = {
"Parcel": ['001', '002', '003', '003'],
"Res" : ['Henry', 'Nick', 'Paul', 'Bill'],
"Bill" : ['4,100', '2,300', '5,200', '4,000'],
"Year" : ['1995', '1990', '2008', '2008']
}
df = pd.DataFrame.from_dict(data=data)
一些伪代码看起来像这样:
df = df.drop_duplicates(subset='Parcel', keep_data=['Res', 'Bill'])
我不确定从哪里开始,但如果有任何关于在哪里查看的提示,我们将不胜感激。
最佳答案
您可以将 .groupby
与 .agg
一起使用:
df = (
df.groupby("Parcel")
.agg({"Res": ", ".join, "Bill": ", ".join, "Year": "first"})
.reset_index()
)
print(df)
打印:
Parcel Res Bill Year
0 001 Henry 4,100 1995
1 002 Nick 2,300 1990
2 003 Paul, Bill 5,200, 4,000 2008
编辑:如果您有很多列,您可以“首先”聚合所有值,然后更新数据框:
g = df.groupby("Parcel")
x = g.agg("first")
x.update(g.agg({"Res": ", ".join, "Bill": ", ".join}))
print(x.reset_index())
Parcel Res Bill Year
0 001 Henry 4,100 1995
1 002 Nick 2,300 1990
2 003 Paul, Bill 5,200, 4,000 2008
关于python - Pandas ,删除重复项但合并某些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67258042/