Python 按顺序向列添加值

Python 按顺序向列添加值,python,pandas,rows,Python,Pandas,Rows,我有一个数据集,我通过 data = pd.read_excel('....\data.xlsx') data = data.fillna(0) 我把它们都做成了线 data['Block']=data['Block'].astype(str) data['Concentration']=data['Concentration'].astype(str) data['Name']=data['Name'].astype(str) 数据如下所示 Block Con

我有一个数据集,我通过

data = pd.read_excel('....\data.xlsx')
data = data.fillna(0)
我把它们都做成了线

data['Block']=data['Block'].astype(str)
data['Concentration']=data['Concentration'].astype(str)
data['Name']=data['Name'].astype(str)
数据如下所示

Block             Con        Name  
  1               100         A
  1               100         A
  1               100         A
  1               33          B
  1               33          B
  1               33          B
  1               0           c
  1               0           c
  1               0           c
  2               100         A
  2               100         A
  2               100         A
  2               100         B
  2               100         B
  2               100         B
  2               33          B
  2               33          B
  2               33          B
  2               0           c
  2               0           c
  2               0           c
 ...
 ...
  24               0          E
Block             Con        Name      replicate
  1               100         A
  1               100         A
  1               100         A
  1               33          B
  1               33          B
  1               33          B
  1               0           c
  1               0           c
  1               0           c
  2               100         A
  2               100         A
  2               100         A
  2               100         B
  2               100         B
  2               100         B
  2               33          B
  2               33          B
  2               33          B
  2               0           c
  2               0           c
  2               0           c
 ...
 ...
  24               0          E
我插入了一列“复制”:

 data['replicate'] = '' 
现在的数据是这样的

Block             Con        Name  
  1               100         A
  1               100         A
  1               100         A
  1               33          B
  1               33          B
  1               33          B
  1               0           c
  1               0           c
  1               0           c
  2               100         A
  2               100         A
  2               100         A
  2               100         B
  2               100         B
  2               100         B
  2               33          B
  2               33          B
  2               33          B
  2               0           c
  2               0           c
  2               0           c
 ...
 ...
  24               0          E
Block             Con        Name      replicate
  1               100         A
  1               100         A
  1               100         A
  1               33          B
  1               33          B
  1               33          B
  1               0           c
  1               0           c
  1               0           c
  2               100         A
  2               100         A
  2               100         A
  2               100         B
  2               100         B
  2               100         B
  2               33          B
  2               33          B
  2               33          B
  2               0           c
  2               0           c
  2               0           c
 ...
 ...
  24               0          E
每个Block | con | name组合有3个重复,我如何在“replicate”列中填入1,2,3

所需的输出将是

Block             Con        Name      replicate
  1               100         A           1
  1               100         A           2
  1               100         A           3
  1               33          B           1
  1               33          B           2
  1               33          B           3
  1               0           c           1
  1               0           c           2
  1               0           c           3
  2               100         A           1
  2               100         A           2
  2               100         A           3
  2               100         B           1
  2               100         B           2
  2               100         B           3
  2               33          B           1
  2               33          B           2
  2               33          B           3
  2               0           c           1
  2               0           c           2
  2               0           c           3
 ...
 ...
  24               0          E           3
伪代码是:

 for b in data.block:
      for  c in data.con:
          for n in data.name:
              for each b|c|n combination:
                  if the same:
                   assign '1' to data.replicate
                   assign '2' to data.replicate
                   assign '3' to data.replicate
我在网上搜索过,没有找到任何解决方案,我也不确定该使用哪个函数

您可以使用:

这看起来像一个groupby:


cumcount枚举每个组中的行(从0开始)。

我不知道为什么,但今天在我的真实数据集上尝试此函数时,它忽略了“浓度”列。因此,对于两个具有不同con值的不同block | name | con组合,它会将1分配给这两个组合。@Jessica请发布一期新文章:)请查看我的新文章,谢谢