基于列标题的python group

时间:2018-01-31 10:31:21

标签: python-3.x pandas csv dataframe pandas-groupby

我的csv文件包含744行和186列,格式如下:

 Label   1          1         0         0         1
 TaxID   P_ERR161   P_ERR162  P_ERR163  P_ERR164  P_ERR165 
 333046  0.05       0         22.33     0.06      7.32
 1049    0.03       0         0.04      0.01      0.02
 337090  0.01       0         9.79      45.88     3.99   
 288681  3.6        0         1.03      251.01    8.11

我需要将基于标签0和1的行值分组为两个单独的数据帧。我见过其他帖子但无法找到问题的解决方案。我需要这个进行统计分析,比如t test,wilcoxon rank sum test。

我试过这个:

df = pd.read_csv('final_out_transposed.csv')
case = df.where(df.Label == 1).dropna()['SRA ID']
ctrl = df.where(df.Label == 2).dropna()['SRA ID']

但这对我没有帮助。任何帮助都非常有用。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我认为header中的第二行和第三行需要Multiindex的参数csv,然后选择xs

df  = pd.read_csv('final_out_transposed.csv', header=[1,2], index_col=[0])
#print (df.head())


case = df.xs('0', axis=1, level=0).dropna()
#print (case.head())

ctrl = df.xs('1', axis=1, level=0).dropna()
#print (ctrl.head())