我有一个pandas dataframe,缺少theta步骤,如下所示,
index name theta r
1 wind 0 10
2 wind 30 17
3 wind 60 19
4 wind 90 14
5 wind 120 17
6 wind 210 18
7 wind 240 17
8 wind 270 11
9 wind 300 13
我需要把缺失的theta加上值
index name theta r
1 wind 0 10
2 wind 30 17
3 wind 60 19
4 wind 90 14
5 wind 120 17
6 wind 150 null
7 wind 180 null
8 wind 210 18
9 wind 240 17
10 wind 270 11
11 wind 300 13
12 wind 330 null
然后用线性插值填充空值。为了简单起见,这里我们可以考虑前一个和下一个可用值的平均值,
index name theta r
1 wind 0 10
2 wind 30 17
3 wind 60 19
4 wind 90 14
5 wind 120 17
6 wind 150 17.5 #(17 + 18)/2
7 wind 180 17.5 #(17 + 18)/2
8 wind 210 18
9 wind 240 17
10 wind 270 11
11 wind 300 13
12 wind 330 11.5 #(13 + 10)/2
我该怎么做?
2条答案
按热度按时间bjg7j2ky1#
可以使用
interpolate
和ffill
:输出:
执行循环插值时,只能用
limit_area='inside'
填充内部值,然后用第一个和最后一个有效行的平均值填充fillna
:输出:
如果你真的希望多个中间值相同,另一个选择是自己计算平均值(使用
ffill
/bfill
):输出:
'r'
)。使用组
一个简单的方法是使用函数和
groupby.apply
:或者,首先
pivot
您的数据:示例输出(
#
显示最初缺失的值):使用
bfill
/ffill
:ajsxfq5m2#
如果
name
列中有相同的值,则可以使用DataFrame.reindex
乘以range
,并将前向和后向填充值除以s2
中最后一个缺失的值,然后用s1
的第一个值替换:使用
DataFrame.interpolate
和辅助行通过r
的回填值进行插值的解决方案:如果可能,第一行缺失: