根据其他列的条件估算列值-Python Pandastic Way

时间:2019-06-26 17:32:29

标签: python-3.x pandas

我有一个这样的数据框,

    cat1     cat2   cat3 day
0   10       25     12   Monday 
1   11       22     14   Tuesday
2   12       30     15   Wednesday
3   10       36     12   Thursday
4   15       38     14   Friday
5   NaN      42     13   Monday
6   11       32     10   Tuesday
7   15       30     12   Wednesday
8   13       28     09   Thursday
9   10       29     10   Friday
10  12       30     16   Monday 

现在,我想将NaN的值替换为cat1列中的Monday过滤的day列的平均值。我的输出是,

        cat1     cat2   cat3 day
    0   10       25     12   Monday 
    1   11       22     14   Tuesday
    2   12       30     15   Wednesday
    3   10       36     12   Thursday
    4   15       38     14   Friday
    5   11       42     13   Monday
    6   11       32     10   Tuesday
    7   15       30     12   Wednesday
    8   13       28     09   Thursday
    9   10       29     10   Friday
    10  12       30     16   Monday 

我正在考虑通过day列的Monday值过滤数据框,用NaN函数替换.mean(),然后将其附加回数据框。例如,

monday_df = df[df['day'] == 'Monday']
mean_val  = monday_df['cat1'].mean()
monday_df['cat1']= Monday_df['cat1'].fillna(mean_val)

此后,将其附加回原始df。但这似乎需要很多编码,是否有一种pandastic方法(可能是一种班轮)来做到这一点,以便获得所需的输出?

0 个答案:

没有答案