迭代通过条件大熊猫蟒行
问题描述:
我有一个Excel表,我通过数据= pd.read_excel(“.. data.xlsx”)迭代通过条件大熊猫蟒行
Block Concentration Name Replicate Value
1 100 A 1 1446
1 100 A 2 25
1 100 A 3 12
1 33 A 1 111
1 33 A 2 222
1 33 A 3 1234
...
1 0 C 3 86
..
2 100 A 1 634
2 100 A 2 93
2 100 A 3 287
2 33 A 1 97234
2 33 A 2 1222
2 33 A 3 456
...
2 0 D 3 9800
...
...
24 0 E 3 93948
有24个块,4种类型的浓度在读和许多名字。每个“Block | Concentration | Name”组合有三个重复项,它们指向唯一的“值”数字。
我创建了一个字典 'd' 与哈希:
hash{Block|Concentration|Name|Replicate} -> value
伪代码:
for block 1-> 24:
for each concentration:
print (concentration)
for each name:
for replicate 1-> 3:
print key of hash{Block|Concentration|Name|Replicate}
我的代码:
for b in data.Block:
for c in data.Concentration:
print(c)
for n in data.Name:
for r in data.Replicate:
print(d)
结果一塌糊涂,我想它打印出每个循环的所有内容。
输出结构,我已铭记在心(输出并不需要在格式):
Block1
Concentration Name A Name B Name C..
100 1446 25 12 .. .. .. ...
33 111 222 1234 .. .. ..
10 .. .. .. ..
0 .. .. .. ..
Block2
Concentration Name A Name B Name C..
100 634 93 287 .. .. .. ...
33 97234 1222 456 .. .. ..
10 .. .. .. ..
0 .. .. .. ..
..
..
..
Block 24 ...
答
您可以使用pivot_table
:
In [11]: df
Out[11]:
Block Con Name Replicate Mean
0 1 100 A 1 20
1 1 100 A 2 10
2 1 100 A 3 30
3 1 100 B 1 40
4 1 100 B 2 12
5 1 100 B 3 23
6 1 33 A 1 56
7 1 33 A 2 234
8 1 33 A 3 377
9 1 33 B 1 434
10 1 33 B 2 1232
11 1 33 B 3 233
In [12]: df.pivot_table(index=["Block", "Con"], columns=["Name", "Replicate"], values="Mean")
Out[12]:
Name A B
Replicate 1 2 3 1 2 3
Block Con
1 33 56 234 377 434 1232 233
100 20 10 30 40 12 23
的感谢!我可以outfile pivot_table使用data.to_excel?还是应该使用别的东西? – Jessica
@Jessica yup,最简单的方法是使用['to_excel'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html)。 –
这已经让我头痛很多天了!非常感谢!你救了我的生命:) :) :) @Andy Hayden – Jessica