Python 多索引数据透视表

Python 多索引数据透视表,python,pandas,Python,Pandas,内容如下所示: import pandas as pd data = pd.read_excel('.../data.xlsx') Out[57]: Block Concentration Name Replicate value 0 1 100 GlcNAc2 1 321 1 1 1

内容如下所示:

import pandas as pd
data = pd.read_excel('.../data.xlsx')

Out[57]: 
        Block    Concentration           Name   Replicate           value
0         1            100           GlcNAc2          1               321
1         1            100           GlcNAc2          2               139
2         1            100           GlcNAc2          3               202
3         1             33           GlcNAc2          1                86
4         1             33           GlcNAc2          2               194
5         1             33           GlcNAc2          3               452
6         1             10           GlcNAc2          1               140
7         1             10           GlcNAc2          2               285
[1752行x 5列]

透视表如下所示(仅为大表的一部分):

我的问题:

如何使用“打印缓冲区”值填充“GlcNAc2”和“Man5GIcNAc2”的“0”浓度

所需输出:

我一直在网上搜索,没有找到任何类似的东西。我甚至还没有找到从“Name”列指向“print buffer”值的方法

从多索引/高级索引章节中,它说要使用

 newdata = data.pivot_table(index=["Block", "Concentration"],columns=["Name","Replicate"], values="value")

但它在我的情况下不起作用,它不适用于透视表,我不知道为什么,我很困惑。数据透视表是多索引吗

如果我理解正确,您希望将带有
Name==Print buffer
的值复制到带有
Name=='GlcNAc2'
'Man5GIcNAc2'
concentration=0
的列中

一种方法是复制原始数据集中的行:

df.xs('one', level='second') 
然后应用pivot_表


备注:我不确定我是否理解你的问题。在您的图片中,值
Block==1
从第一张图片更改为第二张图片,这让我感到困惑。这只是一个错误还是你的问题的核心

如果我理解正确,您希望将带有
Name==Print buffer
的值复制到带有
Name=='GlcNAc2'
'Man5GIcNAc2'
concentration=0
的列中

一种方法是复制原始数据集中的行:

df.xs('one', level='second') 
然后应用pivot_表


备注:我不确定我是否理解你的问题。在您的图片中,值
Block==1
从第一张图片更改为第二张图片,这让我感到困惑。这只是一个错误还是你的问题的核心

“打印缓冲区”与其他字段的关系是什么?简单匹配
Replicate
(1,2,3)?@Parfait print buffer位于每个块中,它是“Name”列中的一个名称。“print buffer”与其他字段的关系如何?简单匹配
Replicate
(1,2,3)?@冻糕打印缓冲区位于每个块中,它是“名称”列中的名称之一。
selection = data[data["Name"] == "Print buffer"]'

selection.loc[:, "Name"] = "GlcNAc2"
data = pd.concat([data, selection])

selection.loc[:, "Name"] = "Man5GIcNAc2"
data = pd.concat([data, selection])