Pandas 仅当满足布尔值/特定值时,才删除重复项
我只想在某些值为true时删除行。特别是在我的例子中,我只想删除Holiday=True且名称和日期匹配的重复行。希望这能给你一个关于我的想法(显然不起作用) 尝试:Pandas 仅当满足布尔值/特定值时,才删除重复项,pandas,Pandas,我只想在某些值为true时删除行。特别是在我的例子中,我只想删除Holiday=True且名称和日期匹配的重复行。希望这能给你一个关于我的想法(显然不起作用) 尝试: mask=df['holiday'] df=pd.concat([ df.loc[mask]。删除重复项(子集=['name','date',keep='first'), df.loc[~掩码], ]) (1) 将整个数据框按列holiday (2) 重复数据消除一部分,保持另一部分不变 (3) 连接两个部分尝试: mask=d
mask=df['holiday']
df=pd.concat([
df.loc[mask]。删除重复项(子集=['name','date',keep='first'),
df.loc[~掩码],
])
(1) 将整个数据框按列holiday
(2) 重复数据消除一部分,保持另一部分不变
(3) 连接两个部分尝试:
mask=df['holiday']
df=pd.concat([
df.loc[mask]。删除重复项(子集=['name','date',keep='first'),
df.loc[~掩码],
])
(1) 将整个数据框按列holiday
(2) 重复数据消除一部分,保持另一部分不变
(3) 连接两个部分您可以使用:
输出
name date holiday subject
1 mary 11-26-2020 True Thanksgiving
2 jake 11-01-2020 False Meeting
3 jake 11-01-2020 False Meeting
4 andy 11-08-2020 False Project
您可以使用:
输出
name date holiday subject
1 mary 11-26-2020 True Thanksgiving
2 jake 11-01-2020 False Meeting
3 jake 11-01-2020 False Meeting
4 andy 11-08-2020 False Project
工作得很有魅力。非常感谢。我这里有一个问题:为什么你的方法只有在假期是真的情况下才会被复制?没有提到这件事。我不明白它是怎么工作的。谢谢因为它只应用于
。drop_duplicates(…)
仅在holiday==True
的部分(这是通过第一个.loc[…]
实现的,它只过滤holiday==True
的记录),第二个。loc[…]
添加带有holiday==False
的片段。非常感谢。我这里有一个问题:为什么你的方法只有在假期是真的情况下才会被复制?没有提到这件事。我不明白它是怎么工作的。谢谢因为它只应用于.drop_duplicates(…)
仅在假日==True
的部分(这是通过第一个.loc[…]
实现的,它只过滤假日==True
的记录),第二个.loc[…]
添加带有假日==False
的片段
0 mary 11-26-2020 True Thanksgiving
1 jake 11-01-2020 False Meeting
2 jake 11-01-2020 False Meeting
3 andy 11-08-2020 False Project
mask = df.duplicated(['name', 'date'], keep='last') & df['holiday']
print(df[~mask])
name date holiday subject
1 mary 11-26-2020 True Thanksgiving
2 jake 11-01-2020 False Meeting
3 jake 11-01-2020 False Meeting
4 andy 11-08-2020 False Project