我有一个包含列中重复值的资料框,我需要识别重复项,保留第一个并替换其他的,可能为零或 NaN
这是 df 的一个例子
ID | 表 | 行业 | 物流 | 商业 | 反馈 | 回传 | 完成的 |
---|---|---|---|---|---|---|---|
1 | 166 | 325158.0 | NaN | 没有任何 | 2140957.0 | NaN | NaN |
2 | 379 | 161616.0 | 417296.0 | 没有任何 | 1808454.0 | NaN | NaN |
3 | 136 | 1729.0。 | 417296.0 | 没有任何 | 1734326.0 | NaN | 217 |
4 | 1173 | 174533.0 | 417296.0 | 没有任何 | 1734188.0 | NaN | 217 |
5 | 111 | 1531.0 | 406413.0 | 没有任何 | 1714706.0 | NaN | 217 |
预期结果:
ID | 表 | 行业 | 物流 | 商业 | 反馈 | 回传 | 完成的 |
---|---|---|---|---|---|---|---|
1 | 166 | 325158.0 | NaN | 没有任何 | 2140957.0 | NaN | NaN |
2 | 379 | 161616.0 | 417296.0 | 没有任何 | 1808454.0 | NaN | NaN |
3 | 136 | 1729.0。 | 没有任何 | 没有任何 | 1734326.0 | NaN | 217 |
4 | 1173 | 174533.0 | 没有任何 | 没有任何 | 1734188.0 | NaN | 没有任何 |
5 | 111 | 1531.0 | 406413.0 | 没有任何 | 1714706.0 | NaN | 没有任何 |
uj5u.com热心网友回复:
例如,要替换 Logistic 列中的重复项,首先要找到重复项:
df.Logistic.duplicated()
默认情况下,keep = ‘first’
(有关pd.duplicated 的更多信息)
因此,当您使用 .loc 本地化所有重复项时,您可以轻松替换它们:
df.loc[df.Logistic.duplicated(), 'Logistic'] = None
for 回圈可以为您的所有列执行此技巧:
for col_name in df.columns:
df.loc[df[col_name].duplicated(), col_name] = None
如果有人有更优雅的方法来为所有列做这件事,我很乐意看到它:)
0 评论