替换选定列中的特定行重复单元格而不删除行
Replace specific row-wise duplicate cells in selected columns without dropping rows
如何在不删除行的情况下替换选定列中的特定行重复单元格(最好不循环遍历行)?
基本上,我想保留第一个值并将一行中剩余的重复值替换为 NAN。
例如:
df_example = pd.DataFrame({'A':['a' , 'b', 'c'], 'B':['a', 'f', 'c'],'C':[1,2,3]})
df_example.head()
原文:
A B C
0 a a 1
1 b f 2
2 c c 3
预期输出:
A B C
0 a nan 1
1 b f 2
2 c nan 3
稍微复杂一点的例子如下:
原文:
A B C D
0 a 1 a 1
1 b 2 f 5
2 c 3 c 3
预期输出:
A B C D
0 a 1 nan nan
1 b 2 f 5
2 c 3 nan nan
使用DataFrame.mask
with Series.duplicated
per rows in DataFrame.apply
:
df_example = df_example.mask(df_example.apply(lambda x: x.duplicated(), axis=1))
print (df_example)
A B C
0 a NaN 1
1 b f 2
2 c NaN 3
有新数据:
df_example = df_example.mask(df_example.apply(lambda x: x.duplicated(), axis=1))
print (df_example)
A B C D
0 a 1 NaN NaN
1 b 2 f 5.0
2 c 3 NaN NaN
如何在不删除行的情况下替换选定列中的特定行重复单元格(最好不循环遍历行)?
基本上,我想保留第一个值并将一行中剩余的重复值替换为 NAN。
例如:
df_example = pd.DataFrame({'A':['a' , 'b', 'c'], 'B':['a', 'f', 'c'],'C':[1,2,3]})
df_example.head()
原文:
A B C
0 a a 1
1 b f 2
2 c c 3
预期输出:
A B C
0 a nan 1
1 b f 2
2 c nan 3
稍微复杂一点的例子如下:
原文:
A B C D
0 a 1 a 1
1 b 2 f 5
2 c 3 c 3
预期输出:
A B C D
0 a 1 nan nan
1 b 2 f 5
2 c 3 nan nan
使用DataFrame.mask
with Series.duplicated
per rows in DataFrame.apply
:
df_example = df_example.mask(df_example.apply(lambda x: x.duplicated(), axis=1))
print (df_example)
A B C
0 a NaN 1
1 b f 2
2 c NaN 3
有新数据:
df_example = df_example.mask(df_example.apply(lambda x: x.duplicated(), axis=1))
print (df_example)
A B C D
0 a 1 NaN NaN
1 b 2 f 5.0
2 c 3 NaN NaN