0
我試圖從字典列表中創建一個數據框。然而,這個列表中的一個條目本身就是一個數組(或者可能是一個熊貓系列)。我需要進行分組和平均,但我無法完成它的工作。 假設我不得不從字典列表中創建一個python熊貓數據框時,每個字典本身的一個條目本身是一個數組
import numpy as np
import pandas as pd
ls=[{'A': 1,'B':4, 'n':.5, 's':.9},{'A': 2,'B':4, 'n':.55, 's':.95},
{'A': 1,'B':5, 'n':.52, 's':.92},{'A': 2,'B':5, 'n':.57, 's':.97}]
df=pd.DataFrame(ls)
我可以通過執行執行數字值N和S的平均值(假設A是我感興趣的B表示一個變量需要平均的,像種子的數量)
g=df.groupby('A')
g['n'].mean()
但是,如果我的字典是由
ls2=[{'A': 1,'B':4, 'n':np.random.random(3), 's':np.random.random(3)},
{'A': 2,'B':4, 'n':np.random.random(3), 's':np.random.random(3)},
{'A': 1,'B':5, 'n':np.random.random(3), 's':np.random.random(3)},
{'A': 2,'B':5, 'n':np.random.random(3), 's':np.random.random(3)}]
df2=pd.DataFrame(ls2)
給出了上述方法是行不通的。這裏n和s會例如給出三個不同的時間點(這些是測量量)。我想創建一個數據幀,這樣我可以寫類似
g2=df2.groupby('A')
g['n'][1].mean()
獲得平均爲n的第二部分,分成變量A的不同值我也看了成使用pd.panel爲這個,但那也不合適。
不幸的是,這並不完全回答我的問題(道歉不夠清楚)。現在,對'n'的所有條目進行平均,例如A = 1。 (對於A = 1,我得到平均值=(.029 + .190 + .912 + .536 + .351 + .572)/6=.431)。但是,我想能夠訪問n的第二個條目的含義。所以我想計算A = 1時的平均值=(.19 + .35)/2=0.27。 –
哦,我(親切的)見。在這種情況下,您希望A = 1有3個值,對嗎? 'df3.groupby(['A',df3.index])。mean()'。你的意思是這樣的結果嗎?只要每個'np.array'具有相同的長度,就可以工作。 –
我也想通過'df3 ['time'] = df3.index'和'g = df3.groupby(['A','time'])['n']'和'g' .mean()'也適用。所以是的,這回答了我的問題。謝謝! –