![](/img/trans.png)
[英]Comparing a value from one dataframe with values from columns in another dataframe and getting the data from third column
[英]Python Dataframe: clean data of one column by comparing values from other columns
对我来说另一个具有挑战性的问题,但对你来说可能是一个简单的问题。 我只是不知道如何以一种蟒蛇的方式思考;
我有一个数据框:
dt={'Name':['A','A','B','B','C','D','D'],'FG':['N','Y','N','Y','N','N','N'], 'Date':[2016,2017,2017,2016,2017,2017,2017]}
df=pd.DataFrame(data=dt,columns=['Name','FG', 'Date'])
我想要做的是,对于“名称”中的每个名称(可以是重复的)检查“FG”中的标志值,如果它设置为“Y”并且与之关联的日期大于与关联的日期“N”我会保留条目,否则我会放弃它。 由于缺乏经验,我真的想不出写这段代码的方法。 在这里形象化是我所拥有的
Name FG Date
A N 2016
A Y 2017
B N 2017
B Y 2016
C Y 2017
D N 2017
D N 2017
这是我想返回的
Name FG Date
A Y 2017
C Y 2017
谢谢各位大佬
再添加一列恢复组内的max
。
df['check']=df.groupby('Name').Date.transform('max')
df.loc[(df.check==df.Date)&(df.FG=='Y'),:]
Out[786]:
Name FG Date check
1 A Y 2017 2017
4 C Y 2017 2017
编辑:
mask=df.groupby('Name').\
apply(lambda x : (x.FG=='Y')&(x.Date>min(x.Date)) if len(x.Date)>1 else (x.FG=='Y')).values
df[mask]
Out[808]:
Name FG Date
1 A Y 2017
4 C Y 2017
数据输入
df
Out[809]:
Name FG Date
0 A N 2016
1 A Y 2017
2 B N 2017
3 B Y 2016
4 C Y 2017
5 D N 2017
6 D N 2017
7 E Y 2017
8 E N 2017
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.