2017-10-08 1 views
2

の平均と私はいくつかのN/Iを埋めることができますどのようにデータフレームの値パンダ:どのように私はn個に記入することができます/前なし - 空の値と次のどれも空でない値

df = pd.DataFrame({'A':[1,1,1,3], 
       'B':[1,1,1,3], 
       'C':[1,np.nan,3,5], 
       'D':[2,np.nan, np.nan, 6]}) 
print(df) 

    A B C D 
0 1 1 1.0 2.0 
1 1 1 NaN NaN 
2 1 1 3.0 NaN 
3 3 3 5.0 6.0 

を持っています前の空でない値とその列の次の空でない値の平均とのn/a値

A B C D 
0 1 1 1.0 2.0 
1 1 1 2.0 4.0 
2 1 1 3.0 4.0 
3 3 3 5.0 6.0 

ありがとう: は、例えば、列C内の第2の値が(1 + 3)/ 2 = 2

所望の出力で埋めなければなりません!

答えて

2

使用ffillbfillの集計meanで、その後、前後に充填することにより、インデックスによってconcatgroupbyNaN Sを置き換える:

df1 = pd.concat([df.ffill(), df.bfill()]).groupby(level=0).mean() 
print (df1) 
    A B C D 
0 1 1 1.0 2.0 
1 1 1 2.0 4.0 
2 1 1 3.0 4.0 
3 3 3 5.0 6.0 

詳細:

print (df.ffill()) 
    A B C D 
0 1 1 1.0 2.0 
1 1 1 1.0 2.0 
2 1 1 3.0 2.0 
3 3 3 5.0 6.0 

print (df.bfill()) 
    A B C D 
0 1 1 1.0 2.0 
1 1 1 3.0 6.0 
2 1 1 3.0 6.0 
3 3 3 5.0 6.0 
+2

このような素敵なロジック。 +1 – Dark

関連する問題