python - 根据条件 pandas python 迭代行

标签 python loops pandas rows

我有一个 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 个区 block 、4 种浓度类型和许多名称。每个“ block |浓度|名称”组合都有三个重复项,它们指向唯一的“值”数字。

我创建了一个字典“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

关于python - 根据条件 pandas python 迭代行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573329/

相关文章:

python - 使用Python将LOG文件信息输入MySQL

python - 在python中输入if条件

javascript - 带有嵌套 For 循环的进度条

loops - F# 创建具有多个函数的单个循环

python - 同时计算 2 列的扩展平均值

python - 将字符串拆分为多个不同的字符

javascript - 创建 3 个选择框(月、日、年),为每个选项创建 php 循环选项,并在 `days` 更改时使用 Javascript 更改 `months` 的选项

python - 数据对齐后无法导出为 CSV

python - 重新采样分钟数据

python - 使用 Homebrew 安装另一个 python 后如何恢复 Mac 默认 python?