首页 > 解决方案 > 将熊猫专栏/系列变成多个系列

问题描述

我觉得我应该在这里使用 pivot_table,但我似乎无法让它按照我想要的方式工作。这是数据(注意:它是数据的子集):

    sample_code analyte  abundance_ppm
0   85GMC-RM001      Au          0.000
1   85GMC-RM001      Bi          0.000
2   85GMC-RM001      Ag          0.400
3   85GMC-RM001      Cu         62.000
4   85GMC-RM001      Pb          7.000
5   85GMC-RM001      Zn         84.000
6   85GMC-RM001      Co         20.000
7   85GMC-RM001      Ni         11.000
8   85GMC-RM001      Mo          0.000
9   85GMC-RM001      Mn        585.000
10  85GMC-RM001      Cd          0.000
11  85GMC-RM001      Fe      63300.000
12  85GMC-RM001      Hg          0.575
13  85GMC-RM001      As          0.000
14  85GMC-RM001      Sb          0.000
15  85GMC-RM002      Au          0.000
16  85GMC-RM002      Bi          0.000
17  85GMC-RM002      Ag          0.500
18  85GMC-RM002      Cu         14.000
19  85GMC-RM002      Pb         14.000

我想整理数据,让每个sample_code出现一次,并将分析物特征转化为每个元素的多个特征。我尝试了一个 pivot_table,但它让一切变得非常混乱(我可能做错了)。此数据框中还有其他数据,但对于每个 sample_code 都是唯一的。分析物列是扩展数据框长度的内容。

我昨天在这半天工作,真的需要继续前进。我觉得这比我想象的要简单!

标签: pythonpandas

解决方案


更新,

df.pivot_table('abundance_ppm', 'sample_code', 'analyte', aggfunc='sum')
# Pick you're aggfunc. 'sum', 'mean', 'first'.

输出:

analyte  sample_code   Ag   As   Au   Bi   Cd    Co    Cu       Fe     Hg     Mn   Mo    Ni    Pb   Sb    Zn
0        85GMC-RM001  0.4  0.0  0.0  0.0  0.0  20.0  62.0  63300.0  0.575  585.0  0.0  11.0   7.0  0.0  84.0
1        85GMC-RM002  0.5  NaN  0.0  0.0  NaN   NaN  14.0      NaN    NaN    NaN  NaN   NaN  14.0  NaN   NaN

IIUC,尝试:

df.pivot('sample_code', 'analyte', 'abundance_ppm').reset_index()

输出:

analyte  sample_code   Ag   As   Au   Bi   Cd    Co    Cu       Fe     Hg     Mn   Mo    Ni    Pb   Sb    Zn
0        85GMC-RM001  0.4  0.0  0.0  0.0  0.0  20.0  62.0  63300.0  0.575  585.0  0.0  11.0   7.0  0.0  84.0
1        85GMC-RM002  0.5  NaN  0.0  0.0  NaN   NaN  14.0      NaN    NaN    NaN  NaN   NaN  14.0  NaN   NaN

推荐阅读