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请发布一期新文章:)请查看我的新文章,谢谢