[英]iterate through rows on condition pandas python
我有一個Excel表,我通過data = 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種濃度類型和許多名稱。 每個“塊|濃度|名稱”組合有三個重復項,它們指向唯一的“值”數字。
我創建了字典'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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.