按标识符对每列的行进行连接
欢迎大家来帮忙。
我想把数据表中每个ID的多行合并成一个单元格,下面是输入格式:
我在pandas中有以下列和数据表:
dict1 = {'ID': ['6610', '6610', '6610', '6620', '6620', '7540', '7540'],
'NEW_ID': ['6615',
'6615',
'6615',
' ',
' ',
nan,
nan],
'OLD_PRICE': [17.22, 17.9, 17.22, 27.49, 20.42, 30.73, 29.55],
'NEW_PRICE': [17.22, 17.22, 27.49, 18.99, 27.49, 29.55, 27.49],
'LABEL': [' NaN1', ' NaN2', ' NaN4', nan, ' Na', 'A', 'B']}
df = pd.DataFrame(dict1)
期望的输出结果:
1 个回答
1
你可以通过 pd.Series.duplicated
来查找 ID
列中的重复项,并用空值 ''
来替换这些重复项:
mask = df["ID"].duplicated(keep="first")
df.loc[mask, "ID"] = ""
df["NEW_ID"] = df["NEW_ID"].fillna("")
print(df)
输出结果是:
ID NEW_ID OLD_PRICE NEW_PRICE LABEL
0 6610 6615 17.22 17.22 NaN1
1 6615 17.90 17.22 NaN2
2 6615 17.22 27.49 NaN4
3 6620 27.49 18.99 NaN
4 20.42 27.49 Na
5 7540 30.73 29.55 A
6 29.55 27.49 B
注意:如果你需要去掉数据框中元素的空格,可以使用以下代码:
df = df.applymap(lambda elem: elem.strip() if isinstance(elem, str) else elem)