我在pandas DataFrame中有以下数据:
import pandas as pd
df = pd.read_csv('example_data_file.csv')
df.head()
ID Year status
223725 1991 No
223725 1992 No
223725 1993 No
223725 1994 No
223725 1995 No
我想替换列status
中的值Yes
,该值具有值和No
基于以下条件的ID:如果列ID
中至少有一个值Yes
,status
则No
该列所status
特有的所有观测值(包括)都将ID
替换为Yes
。否则,它保持不变。
例如在下面的数据帧,844272365
有Yes
在status
最后一排,然后在所有以前的意见,status
在这些行具体到844272365
应该被替换Yes
。
ID Year status
844272365 1991 No
844272365 1992 No
844272365 1993 No
844272365 1994 No
844272365 1995 No
844272365 1996 No
844272365 1997 No
844272365 1998 No
844272365 1999 No
844272365 2000 No
844272365 2001 No
844272365 2002 No
844272365 2003 No
844272365 2004 No
844272365 2005 No
844272365 2006 No
844272365 2007 No
844272365 2008 No
844272365 2010 No
844272365 2011 No
844272365 2012 No
844272365 2013 Yes
如何根据上述条件对DataFrame中的许多ID进行这些替换?
您可以使用transform
:
df['new_status'] = (df
.groupby('ID')['status']
.transform(lambda x: 'Yes' if x.str.contains('Yes').any() else 'No'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句