我有一个包含以下列的大型 DataFrame:
import pandas as pd
x = pd.read_csv('age_year.csv')
x.head()
ID Year age
22445 1991
29925 1991
76165 1991
223725 1991 16.0
280165 1991
Year
列的值范围为 1991
至 2017
.最ID
有一个 age
每个值Year
, 例如:x.loc[x['ID'] == 280165].to_clipboard(index = False)
ID Year age
280165 1991
280165 1992
280165 1993
280165 1994
280165 1995 16.0
280165 1996 17.0
280165 1997 18.0
280165 1998 19.0
280165 1999 20.0
280165 2000 21.0
280165 2001
280165 2002
280165 2003
280165 2004 25.0
280165 2005 26.0
280165 2006 27.0
280165 2007
280165 2008
280165 2010 31.0
280165 2011 32.0
280165 2012 33.0
280165 2013 34.0
280165 2014 35.0
280165 2015 36.0
280165 2016 37.0
280165 2017 38.0
我想填充 age
中的缺失值每个唯一的列 ID
基于他们现有的值(value)观。例如,对于 ID
上面的280165,我们知道它们是29
在 2008
,假设它们是 31
在 2010
(2007 年有 28 个,2003 年有 24 个,依此类推)。这些缺失的应该怎么填
age
许多独特的值(value) ID
每年?我不确定如何在整个 DataFrame 中以统一的方式执行此操作。本题中作为例子使用的数据可以在here中找到。 .
最佳答案
尝试做:
def get_age(s):
present = s.age.notna().idxmax()
diff = s.loc[[present]].eval('age - Year').iat[0]
s['age'] = diff + s.Year
return s
df.groupby(['ID']).apply(get_age)
关于python - Pandas DataFrame 填充列中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63412782/