2017-11-22 4 views
2

私は1つの列を持つパンダのデータフレームを持ち、各行に値のリストを持っています。各行の対応する値を使って平均値を計算する必要があります。つまり、リストに8つの値の平均が必要です。リストの各要素は、私は、可変pandas単一の値の代わりにリストを持つ列の平均を計算する

>>> df_ex 
0 [1, 2, 3, 4, 5, 6, 7, 8] 
1 [2, 3, 4, 5, 6, 7, 8, 1] 

の値numpyの配列に変換する試み、次に手段を取るが、私はエラーTypeError: unsupported operand type(s) for /: 'list' and 'int'を取得維持されます。私はリストを使う代わりに、それをカラムに変換すべきだと思っていますが、それは私の文脈では不可能です。どのように私はこれを達成することができるかについての任意のアイデア?

答えて

2

あなたはarrayに最初にしてネストされたリストに変換してからmeanを数えることができます。

a = np.array(df_ex.values.tolist()) 
print (a) 
[[1 2 3 4 5 6 7 8] 
[2 3 4 5 6 7 8 1]] 

#all values 
print (a.mean()) 
4.5 

#specifying axis 
print (a.mean(axis=1)) 
[ 4.5 4.5] 

print (a.mean(axis=0)) 
[ 1.5 2.5 3.5 4.5 5.5 6.5 7.5 4.5] 
1

あなたはネストされたリストを渡すと、軸を指定してnp.meanに呼び出すことができます。

セットアップ

df_ex = pd.DataFrame(dict(
    col1=[[1, 2, 3, 4, 5, 6, 7, 8], 
      [2, 3, 4, 5, 6, 7, 8, 1]])) 

df_ex 

         col1 
0 [1, 2, 3, 4, 5, 6, 7, 8] 
1 [2, 3, 4, 5, 6, 7, 8, 1] 

ソリューション

np.mean(df_ex['col1'].tolist(), axis=1) 

array([ 4.5, 4.5]) 

それとも

np.mean(df_ex['col1'].tolist(), axis=0) 

array([ 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 4.5]) 
関連する問題