在Pandas中创建多层透视表

2024-05-14 00:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

1。背景

我现在拥有的.xls文件包含了不同地点在许多方面的多种污染物的一些参数。在

我创建了一个简化的数据帧,如下所示:

enter image description here

一些声明:

  1. 站点包含监视站点属性。在这种情况下,S1S2是这里仅有的两个位置。

  2. 时间列包含不同站点的监测周期。

  3. 物种A&B代表检测到两种化学污染物。

  4. 浓度是每个物种的一个关键参数(A&B)代表浓度。注意,物种A的浓度应该是平行测量的两倍。

  5. pQ是两个不同的分析实验。由于物种A有两个样本,分别以P1P2P3Q1作为分析结果。物种B只能通过P进行分析。因此,P1P2P3是唯一的参数。

在阅读了一些关于使用熊猫操作pivot_表的帖子之后,我想试试。在

2。我的目标

我在Excel中手动展示了我的目标文件构造,如下所示:

enter image description here

3。我的工作

df = pd.ExcelFile("./test_file.xls")
df = df.parse("Sheet1")
pd.pivot_table(df,index = ["Site","Time","Species"])

结果是:

enter image description here

更新

我想弄清楚的是在下面创建两个列pQ和子列。在

我已经重新上传了我的测试文件here。任何有兴趣的人都可以下载。在

  • 分别对物种A的每个样本进行PQ检验。在
  • Conc测试适用于两者。在

任何建议都将不胜感激!在


Tags: 文件目标df参数站点物种代表xls
1条回答
网友
1楼 · 发布于 2024-05-14 00:23:33

IIUC公司

您需要相同的数据帧,但具有更好的列索引。在

要创建第一个级别:

level0 = df.columns.str.extract(r'([^\d]*)', expand=False)

然后为columns属性指定一个多重索引。在

^{pr2}$

看起来像:

print df

                       Conc     P                 Q      
                       Conc    P1    P2    P3    Q1    Q2
Site Time     Species                                    
S1   20141222 A        0.79  0.02  0.62  1.05  0.01  1.73
     20141228 A        0.13  0.01  0.79  0.44  0.01  1.72
     20150103 B        0.48  0.03  1.39  0.84   NaN   NaN
     20150104 A        0.36  0.02  1.13  0.31  0.01  0.94
     20150109 A        0.14  0.01  0.64  0.35  0.00  1.00
     20150114 B        0.47  0.08  1.16  1.40   NaN   NaN
     20150115 A        0.62  0.02  0.90  0.95  0.01  2.63
     20150116 A        0.71  0.03  1.72  1.71  0.01  2.53
     20150121 B        0.61  0.03  0.67  0.87   NaN   NaN
S2   20141222 A        0.23  0.01  0.66  0.44  0.01  1.49
     20141228 A        0.42  0.06  0.99  1.56  0.00  2.18
     20150103 B        0.09  0.01  0.56  0.12   NaN   NaN
     20150104 A        0.18  0.01  0.56  0.36  0.00  0.67
     20150109 A        0.50  0.03  0.74  0.71  0.00  1.11
     20150114 B        0.64  0.06  1.76  0.92   NaN   NaN
     20150115 A        0.58  0.05  0.77  0.95  0.01  1.54
     20150116 A        0.93  0.04  1.33  0.69  0.00  0.82
     20150121 B        0.33  0.09  1.33  0.76   NaN   NaN

相关问题 更多 >