1

(200 列 x 5000 行) のデータ フレームがあり、値が欠落している場合があります。右側のセルと左側のセルを平均して、欠損値を埋めたいと思います。

例えば:

    A   B   C   D   E
1  34  54  56   0  78
2  12  87  78  23  12 
3  78  35   0  72  31
4  84  25  14  56   0
5  26  82  13  14  34

このデータフレームには、3 つの欠損値があります。

1) D1
2) C3
3) E4

D1 should be (78 + 56)/2 = 67
C3 should be (72 + 32)/2 = 55
E4 should be (26 + 56)/2 = 41

したがって、結果のデータフレームは次のようになります。

    A   B   C   D   E
1  34  54  56  67  78
2  12  87  78  23  12 
3  78  35  55  72  31
4  84  25  14  56  41
5  26  82  13  14  34

パンダでこれを行う自然な方法はありますか?

4

1 に答える 1

2

新しいinterpolate()メソッドでこれを実行できると思います。次のように手動で実行しようとしました。

df = pd.DataFrame({"A":[34,12,78,84,26], "B":[54,87,35,25,82], "C":[56,78,0,14,13], "D":[0,23,72,56,14], "E":[78,12,31,0,34]})

# get flat array from DataFrame
a = np.array(df).flatten()

# get flat array, zeroes replaced with left + right / 2
res = np.where(a == 0, (np.roll(a, 1) + np.roll(a, -1)) / 2, a) 

# convert back to DataFrame
df_new = pd.DataFrame(res.reshape(df.shape), columns = df.columns)

#     A   B   C   D   E
# 0  34  54  56  67  78
# 1  12  87  78  23  12
# 2  78  35  53  72  31
# 3  84  25  14  56  41
# 4  26  82  13  14  34
于 2013-10-24T06:18:04.947 に答える