【问题标题】:Filling missing values using forward and backward fill in pandas dataframe (ffill and bfill)在 pandas 数据帧中使用前向和后向填充填充缺失值(ffill 和 bfill)
【发布时间】:2017-01-11 11:11:15
【问题描述】:

熊猫数据框的初学者。我在下面有这个数据集,其中缺少 A 列和 B 列(Test.csv)的值:

DateTime              A             B
01-01-2017 03:27        
01-01-2017 03:28        
01-01-2017 03:29    0.18127718  -0.178835737
01-01-2017 03:30    0.186923018 -0.183260853
01-01-2017 03:31        
01-01-2017 03:32        
01-01-2017 03:33    0.18127718  -0.178835737

我可以使用这段代码通过前向传播来填充值,但这只会填充 03:31 和 03:32,而不是 03:27 和 03:28。

import pandas as pd
import numpy as np

df = pd.read_csv('test.csv', index_col = 0)
data = df.fillna(method='ffill')
ndata = data.to_csv('test1.csv')

结果:

   DateTime              A             B
    01-01-2017 03:27        
    01-01-2017 03:28        
    01-01-2017 03:29    0.18127718  -0.178835737
    01-01-2017 03:30    0.186923018 -0.183260853
    01-01-2017 03:31    0.186923018 -0.183260853
    01-01-2017 03:32    0.186923018 -0.183260853
    01-01-2017 03:33    0.18127718  -0.178835737

如何包含“Bfill”以使用回填填充 03:27 和 03:28 的缺失值?

【问题讨论】:

  • 你试过data = df.fillna(method='bfill')吗?甚至data = df.bfill()?

标签: python pandas dataframe


【解决方案1】:

如果需要,可以使用ffill 和bfill 替换NaN 值向前和向后填充:

print (df)
                         A         B
DateTime                            
01-01-2017 03:27       NaN       NaN
01-01-2017 03:28       NaN       NaN
01-01-2017 03:29  0.181277 -0.178836
01-01-2017 03:30  0.186923 -0.183261
01-01-2017 03:31       NaN       NaN
01-01-2017 03:32       NaN       NaN
01-01-2017 03:33  0.181277 -0.178836

data = df.ffill().bfill()
print (data)
                         A         B
DateTime                            
01-01-2017 03:27  0.181277 -0.178836
01-01-2017 03:28  0.181277 -0.178836
01-01-2017 03:29  0.181277 -0.178836
01-01-2017 03:30  0.186923 -0.183261
01-01-2017 03:31  0.186923 -0.183261
01-01-2017 03:32  0.186923 -0.183261
01-01-2017 03:33  0.181277 -0.178836

与带参数的函数fillna相同:

data = df.fillna(method='ffill').fillna(method='bfill')

【讨论】:

  • 请记住,您调用 ffill 和 bfill 的顺序必须适合您的用例。
猜你喜欢
  • 2020-11-18
  • 2022-11-02
  • 1970-01-01
  • 2023-03-30
  • 2016-11-03
  • 2012-09-18
相关资源
最近更新 更多