我有一个带有一些重复 ID 的 df,如下所示:
index ID name surname
1 1 a x
2 2 b y
3 1 c z
4 3 d j
我想将重复行的列附加到右侧并删除“单个”行,如下所示:
index ID name surname second_name second_surname
1 1 a x c z
最有效的方法是什么? (我有数百万行)
最佳答案
尝试使用drop_duplicates
, merge
和 query
像这样:
df['second_name'] = (df.drop_duplicates(subset='ID')
.reset_index()
.merge(df, on='ID', how='inner', suffixes=('', '_'))
.query("name != name_")
.set_index('level_0')['name_'])
[输出]
index ID name second_name
0 1 1 a c
1 2 2 b NaN
2 3 1 c NaN
3 4 3 d NaN
如果您只需要单行,请使用 dropna
:
df.dropna(subset=['second_name'])
[输出]
index ID name second_name
0 1 1 a c
关于python - 将重复项添加为列并删除其他行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56972170/