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])