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
...... ...... ...... ......
1742 24 0 Print buffer 1 -9968
1743 24 0 Print buffer 2 -4526
1744 24 0 Print buffer 3 14246
[1752行x 5列]
数据透视表看起来像这样(只是大表的一部分):
newdata = data.pivot_table(index=["Block", "Concentration"],columns=["Name","Replicate"], values="value")
我的问题:
我如何填写' 0'浓度的GlcNAc2'和' Man5GIcNAc2'使用'打印缓冲区'值?
所需的输出:
我一直在网上搜索,并没有真正找到类似的东西。我甚至没有找到一种指向“打印缓冲区”的方法。来自'名称'的值列。
来自MultiIndex /高级索引章节,它说要使用
df.xs('one', level='second')
但它在我的情况下不起作用,它不适用于数据透视表,我不知道为什么,我感到困惑。数据透视表是多索引吗?
答案 0 :(得分:0)
如果我理解正确,您希望将Name == Print buffer
的值复制到包含Name == 'GlcNAc2'
和'Man5GIcNAc2'
以及concentration = 0
的列。
这样做的一种方法是复制原始数据集中的行:
selection = data[data["Name"] == "Print buffer"]'
selection.loc[:, "Name"] = "GlcNAc2"
data = pd.concat([data, selection])
selection.loc[:, "Name"] = "Man5GIcNAc2"
data = pd.concat([data, selection])
然后应用pivot_table。
备注:我不确定我理解你的问题。我感到困惑的是,在你的照片中,值Block == 1
从第一张图片变为第二张。这只是一个错误还是你问题的核心?