Python 使用条件删除重复项
假设我有以下数据帧:Python 使用条件删除重复项,python,pandas,Python,Pandas,假设我有以下数据帧: >>> import pandas as pd >>> >>> d=pd.DataFrame() >>> >>> d['Var1']=['A','A','B','B','C','C','D','E','F'] >>> d['Var2']=['A','Z','B','Y','X','C','Q','N','P'] >>> d['Value']=[3
>>> import pandas as pd
>>>
>>> d=pd.DataFrame()
>>>
>>> d['Var1']=['A','A','B','B','C','C','D','E','F']
>>> d['Var2']=['A','Z','B','Y','X','C','Q','N','P']
>>> d['Value']=[34, 45, 23, 54, 65, 77,100,102,44]
>>> d
Var1 Var2 Value
0 A A 34
1 A Z 45
2 B B 23
3 B Y 54
4 C X 65
5 C C 77
6 D Q 100
7 E N 102
8 F P 44
>>>
我想删除“Var1”中存在重复项的情况,但我想确保保留的重复项是“Var1”==“Var2”中的重复项
我的输出数据帧是:
Var2 Value
Var1
A A 34
B B 23
C C 77
D Q 100
E N 102
F P 44
>>>
有没有关于我如何做到这一点的建议?使用groupby过滤器是最好的方法吗?这里有一个简单的例子:
>>d.loc[~d.Var1[(d.Var1==d.Var2.argsort()]。重复('last')]
Var1 Var2值
0 A 34
2 B 23
5 C 77
6dq100
7 E N 102
8 F P 44
如果希望(d.set_index('Var1')
)准确获取发布的输出,则可以在Var1
上设置索引
要分解它:
与d.Var1[(d.Var1==d.Var2).argsort()]
中的值串联,排列方式应确保Var1
中的行位于末尾Var1==Var2
对于~d.Var1[(d.Var1==d.Var2).argsort()].duplicated('last')
不重复的行为true;如果有重复项,我们选择最后一个(因此Var1
具有优先级)Var1==Var2
>>d.loc[~d.Var1[(d.Var1==d.Var2.argsort()]。重复('last')]
Var1 Var2值
0 A 34
2 B 23
5 C 77
6dq100
7 E N 102
8 F P 44
如果希望(d.set_index('Var1')
)准确获取发布的输出,则可以在Var1
上设置索引
要分解它:
与d.Var1[(d.Var1==d.Var2).argsort()]
中的值串联,排列方式应确保Var1
中的行位于末尾Var1==Var2
对于~d.Var1[(d.Var1==d.Var2).argsort()].duplicated('last')
不重复的行为true;如果有重复项,我们选择最后一个(因此Var1
具有优先级)Var1==Var2
- 我的建议是创建Var 2和作为字典的值
d['Var1']=['A','A','B','B','C','C','D','E','F']
d['Var2']=['A','Z','B','Y','X','C','Q','N','P']
d['Var2Val'] = {'A':34,'Z':45,'B':23,'Y':54,'X':65,'C':77,'Q':100,'N':102,'P':44}
然后我会为Var1创建一个没有重复项的列表,如果它们在Var2中,则打印它们
for x in d['Var1']:
if d['Var1'][x] in d['Var2']:
然后打印表格
至少这是最简单的方法,尽管可能有点长,但我的建议是创建Var2和作为字典的值
d['Var1']=['A','A','B','B','C','C','D','E','F']
d['Var2']=['A','Z','B','Y','X','C','Q','N','P']
d['Var2Val'] = {'A':34,'Z':45,'B':23,'Y':54,'X':65,'C':77,'Q':100,'N':102,'P':44}
然后我会为Var1创建一个没有重复项的列表,如果它们在Var2中,则打印它们
for x in d['Var1']:
if d['Var1'][x] in d['Var2']:
然后打印表格
至少这是最简单的方法,尽管可能有点长