python - 如果另一列中的值为空,则删除重复项 - Pandas

标签 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 .所以基本上,保留 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/

相关文章:

python - 如何在 Keras 或 Theano 中实现具有指数衰减学习率的卷积神经网络

python - Pandas 数据框获取最后一个非零列的值

python - 删除 Python Pandas 中多列中的所有重复行

python - 在 Python Pandas 中删除多列中的所有重复行

python - 这是在 Python 中对数据结构执行一系列操作的好方法吗?

减法时的 Python timedelta 行为

python - 如何通过文件处理从给定的数据框列中获取唯一对?

python - 使用 pandas 根据其他列的值获取最新值

python - 如何在 pandas 数据框中连接多个文本字段

python - 如何连接具有相同键和互补值的两行