在fillna()仍然是NaN之后的pandas df

时间:2017-07-28 13:24:12

标签: pandas

40000行1列数据保存为excel。其中有一百个空值。如行361 ...... 当我执行df.fillna(method='bfill')时,NaN值仍然是NaN。  如果切片的df片段包含Null值,则会对其进行处理。 我试过但仍然无法填充NaN细胞。 那有什么不对呢? df文件在这里:

excel file click here

df=pd.read_execel('npp.xlsx')
df.fillna(method='bfill')
print( df.iloc[360:370,] )
Out[122]: 
          0
t360     NaN
t361     NaN
t362     NaN
t363     NaN
t364  220.50
t365  228.59
t366     NaN
t367     NaN
t368     NaN
t369     NaN

在切片df上应用fillna()时,可以替换NaN值:

print( df.iloc[360:370,].fillna(method='bfill') )
       0
t360  220.50
t361  220.50
t362  220.50
t363  220.50
t364  220.50
t365  228.59
t366     NaN
t367     NaN
t368     NaN
t369     NaN

1 个答案:

答案 0 :(得分:3)

您需要分配输出:

df = pd.read_excel('npp.xlsx')
df = df.fillna(method='bfill')

df = df[df[0].isnull()]
print (df)
Empty DataFrame
Columns: [0]
Index: []

或使用inplace=True参数:

df = pd.read_excel('npp.xlsx')
df.fillna(method='bfill', inplace=True)
df = df[df[0].isnull()]
print (df)
Empty DataFrame
Columns: [0]
Index: []

或更短:

df = df.bfill()
df.bfill(inplace=True)