[英]Replacing values in pandas dataframe column with same row value from another column
[英]replacing the missing value with different values on the same column in pandas dataframe
A B C D
1 2010 one 0 0
2 2020 one 2 4
3 2007 two 0 8
4 2010 one 8 4
5 2020 four 6 12
6 2007 three 0 14
7 2006 four 7 14
8 2010 two 10 12
我需要用 C 年值的平均值替換 0。例如 2010 C 值將是 9。最好的方法是什么? 我有超過 10,000 行。
您可以使用replace
將np.nan
列中的 0 更改為 np.nan,並將fillna
用於map
的年度平均值:
df.C.replace({0:np.nan},inplace=True)
df.C.fillna(
df.A.map(
df.groupby(df['A']).C.mean()\
.to_dict()
),inplace=True
)
print(df)
A B C D
0 2010 one 9.0 0
1 2020 one 2.0 4
2 2007 two NaN 8
3 2010 one 8.0 4
4 2020 four 6.0 12
5 2007 three NaN 14
6 2006 four 7.0 14
7 2010 two 10.0 12
2007 仍然是NaN
,因為我們在初始數據中除了 0 之外沒有其他值。
這就是我認為我會做的事情。 下面的代碼將是偽代碼。
1:您找到每年的平均值,並將其放入字典中。
my_year_dict = {'2020':xxx,'2021':xxx}
2:使用apply & lambda函數
df[New C Col] = df[C].apply(lambda x: my_year_dict[x] if x is 0)
希望這可以是一個開始!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.