我有一个很大的面板数据存储在pandas DataFrame中:data
import pandas as pd
df = pd.read_csv('Qs_example_data.csv')
df.head()
ID Year DOB status YOD
223725 1991 1975.0 No 2021
223725 1992 1975.0 No 2021
223725 1993 1975.0 No 2021
223725 1994 1975.0 No 2021
223725 1995 1975.0 No 2021
我想根据以下条件删除行: 如果在
YOD
中的值与 Year
中的值匹配,则删除该 ID
的匹配行后的所有行;或者如果在该 ID
的 status
列中观察到一个 Yes
,则删除该 ID
的所有行。例如,在 DataFrame 中,ID
68084329
在第 221930 行具有 DOB
和 YOD
列中的 2012
值。应删除 68084329
的 221930 之后的所有行。df.loc[x['ID'] == 68084329]
ID Year DOB status YOD
221910 68084329 1991 1942.0 No 2012
221911 68084329 1992 1942.0 No 2012
221912 68084329 1993 1942.0 No 2012
221913 68084329 1994 1942.0 No 2012
221914 68084329 1995 1942.0 No 2012
221915 68084329 1996 1942.0 No 2012
221916 68084329 1997 1942.0 No 2012
221917 68084329 1998 1942.0 No 2012
221918 68084329 1999 1942.0 No 2012
221919 68084329 2000 1942.0 No 2012
221920 68084329 2001 1942.0 No 2012
221921 68084329 2002 1942.0 No 2012
221922 68084329 2003 1942.0 No 2012
221923 68084329 2004 1942.0 No 2012
221924 68084329 2005 1942.0 No 2012
221925 68084329 2006 1942.0 No 2012
221926 68084329 2007 1942.0 No 2012
221927 68084329 2008 1942.0 No 2012
221928 68084329 2010 1942.0 No 2012
221929 68084329 2011 1942.0 No 2012
221930 68084329 2012 1942.0 Yes 2012
221931 68084329 2013 1942.0 No 2012
221932 68084329 2014 1942.0 No 2012
221933 68084329 2015 1942.0 No 2012
221934 68084329 2016 1942.0 No 2012
221935 68084329 2017 1942.0 No 2012
我有很多ID,这些ID的行需要根据上述条件删除。我该怎么做?
x = df[df["Year"] > df["YOD"]].index
然后df.drop(x, inplace = True)
。 - MI MAdf[df["Year"] <= df["YOD"]]
? - Henry Yik