gpt4 book ai didi

python - 如何按 Pandas 中的分层列分组?

转载 作者:行者123 更新时间:2023-11-28 21:14:19 25 4
gpt4 key购买 nike

我有一个包含分层列索引的数据框。现在我想按 ['X', 'chromosome'] 列对其进行分组。有没有办法在不改变数据框结构的情况下做到这一点?

import pandas as pd

X = pd.DataFrame.from_dict( {'chromosome':['chr1', 'chr2', 'chr2', 'chr2'],'start':[1,2,1,4]})
Y = pd.DataFrame.from_dict( {'chromosome':['chr1', 'chr2', 'chr2', 'chr3'],'start':[4,5,6,1]})
df_stats = pd.DataFrame.from_dict( {'pvalue':[ 1e-30, 1e-3, 1e-10, 1e-40],'t-stat':[4.4,5.5,6.6, 7.7]})

dd = {'X': X, 'Y': Y, 'STATS':df_stats}
df_qtls = pd.concat(dd.values(), axis = 1, keys= list(dd.keys()) )
df_qtls

for n, g in df_qtls.groupby(['X', 'chromosome'], axis=0):
print(n, g)

导致错误:

...
ValueError: Grouper for 'X' not 1-dimensional

最佳答案

对于多级列,使用 ('X', 'chromosome') 访问特定列。

for n, g in df_qtls.groupby([('X', 'chromosome')]):
print(n)
print(g)

chr1
Y X STATS
chromosome start chromosome start pvalue t-stat
0 chr1 4 chr1 1 1.0000e-30 4.4
chr2
Y X STATS
chromosome start chromosome start pvalue t-stat
1 chr2 5 chr2 2 1.0000e-03 5.5
2 chr2 6 chr2 1 1.0000e-10 6.6
3 chr3 1 chr2 4 1.0000e-40 7.7

关于python - 如何按 Pandas 中的分层列分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com