我拥有的:
df
Name |Vehicle
Dave |Car
Mark |Bike
Steve|Car
Dave |
Steve|
我想从 Name 列中删除重复项,但前提是 Vehicle 列中的相应值为 null。我知道我可以使用
df.dropduplicates(subset=['Name'])
与 Keep =
要么 'First' or 'Last'
但我正在寻找的是一种从 Name
中删除重复项的方法Vehicle
所在列对应的值列是 null
.所以基本上,保留 Name
如果Vehicle
列是 不是 null 并删除其余部分。如果名称没有重复,则即使 Vehicle
中的相应值也保留该行一片空白。非常感谢
最佳答案
我认为您需要按位 AND
链接 2 个掩码( &
) 与 Series.notna
和 Series.duplicated
:
m1 = df['Vehicle'].notna()
m2 = ~df['Name'].duplicated()
df1 = df[m1 & m2]
print (df1)
Name Vehicle
0 Dave Car
1 Mark Bike
2 Steve Car
如果需要单独进行这些操作 - 首先删除所有 NaN 行,然后删除重复项以避免在
NaN
中测试重复项s 行(如有必要):df2 = df.dropna(subset=['Vehicle']).drop_duplicates('Name')
print (df2)
Name Vehicle
0 Dave Car
1 Mark Bike
2 Steve Car
关于python - 如果另一列中的值为空,则删除重复项 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59532750/