簡體   English   中英

用 pandas dataframe 中同一列上的不同值替換缺失值

[英]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 行。

您可以使用replacenp.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM