我正在处理如下数据。数据框按日期排序:
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()))
这在另一栏中为我提供了正确的方法,并且不能代替NaN。
2)此riff用列的平均值替换NaN:
df = df.groupby(df.columns, axis = 1).transform(lambda x: x.fillna(x.mean()))
这两个都不能完全满足我的需求。如果有人可以指导我,将不胜感激!
答案 0 :(得分:4)
您可以用value
+ shift
+ expanding
中的新系列替换mean
,1
组的第一个值不会被替换,因为之前的{ {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>