Nit*_*iry 3 python pandas drop-duplicates
我拥有的:
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。所以基本上,保留NameifVehicle列不为空并删除其余部分。如果名称没有重复,即使相应的值为Vehicle空,也保留该行。
非常感谢
我认为您需要按位AND( &)Series.notna和2 个链式掩码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
如果需要单独进行这些操作 - 首先删除所有 NaNs 行,然后删除重复项以避免测试NaNs 行中的重复项(如有必要):
df2 = df.dropna(subset=['Vehicle']).drop_duplicates('Name')
print (df2)
    Name Vehicle
0   Dave     Car
1   Mark    Bike
2  Steve     Car
| 归档时间: | 
 | 
| 查看次数: | 2703 次 | 
| 最近记录: |