熊猫-用特定组的平均值替换列中的NaN

时间:2019-09-15 11:21:36

标签: python pandas dataframe

我正在处理如下数据。数据框按日期排序:

category  value  Date
0         1      24/5/2019     
1         NaN    24/5/2019         
1         1      26/5/2019       
2         2      1/6/2019      
1         2      23/7/2019       
2         NaN    18/8/2019         
2         3      20/8/2019       
7         3      1/9/2019 
1         NaN    12/9/2019       
2         NaN      13/9/2019       

我想用该特定类别的先前均值替换“ NaN”值。

在熊猫中做到这一点的最佳方法是什么?

我考虑过的一些方法:

1)此小段:

   df['mean' = df.groupby('category')['time'].apply(lambda x: x.shift().expanding().mean()))

source

这在另一栏中为我提供了正确的方法,并且不能代替NaN。

2)此riff用列的平均值替换NaN:

df = df.groupby(df.columns, axis = 1).transform(lambda x: x.fillna(x.mean()))

Source 2

这两个都不能完全满足我的需求。如果有人可以指导我,将不胜感激!

2 个答案:

答案 0 :(得分:4)

您可以用value + shift + expanding中的新系列替换mean1组的第一个值不会被替换,因为之前的{ {1}}个值退出:

NaN

答案 1 :(得分:1)

您可以使用pandas.Series.fillna替换NaN值:

<div class="panel-body table-responsive">
          <table datatable [dtOptions]="dtOptions" class="table table-striped table-bordered dt-responsive nowrap"></table>
        </div>