次のコードがあります。
df0 = pd.DataFrame([[1,2],[2,2],[3,1],[4,4],[5,4]], columns = ['A','B'])
switch = [[1,3,4],[2,5]]
collect = []
for lists in switch:
mask = df0.A.isin(lists)
dat = df0[mask]
avg=dat.mean().round(2)
_, p_val = stats.ttest_rel(dat.iloc[0],dat.iloc[1])
collect.append(avg)
collect.append(p_val.round(2))
これにより、次が生成されます。
[A 2.67
B 2.33
dtype: float64,
0.8,
A 3.5
B 3.0
dtype: float64,
0.13]
でも私はしたい:
A B C
2.67 2.33 0.8
3.5 3.0 0.13
私の問題は、collectpd.Series と数字を含む混乱したリストだと思います。望ましい結果を生み出すための最もパンダらしい方法は何ですか? または、ループを使用せずにベクトル化を使用して、平均値と p 値を見つける方法を改善する方法はありますか?