我有一个包含一些复制行的数据框
item h2 h3 h4
----------------
foo v1 ... ...
foo v2 ... ...
foo v1 ... ...
foo v2 ... ...
foo v1 ... ...
foo v2 ... ...
foo v1 ... ...
foo v2 ... ...
bar v5 ... ...
bar v6 ... ...
bar v7 ... ...
bar v5 ... ...
bar v6 ... ...
bar v7 ... ...
我的目标是在此数据框中添加一列 (new_id
),该列指示重复 block 的递增计数( block 是具有相同 item
的一组行) name)以 item
列中的值作为前缀(如果有帮助,复制的 block 将是连续的)
item h2 h3 h4 new_id
-----------------------
foo v1 ... ... foo1
foo v2 ... ... foo1
foo v1 ... ... foo2
foo v2 ... ... foo2
foo v1 ... ... foo3
foo v2 ... ... foo3
foo v1 ... ... foo4
foo v2 ... ... foo4
bar v5 ... ... bar1
bar v6 ... ... bar1
bar v7 ... ... bar1
bar v5 ... ... bar2
bar v6 ... ... bar2
bar v7 ... ... bar2
关于如何实现这一目标的建议?
最佳答案
使用 str.cat()
将列 item
与 h2
中每个组的累计计数连接起来。显然累计计数是从0开始的,偏移1
df.item.str.cat((df.groupby('h2').cumcount()+1).astype(str),sep='')
item h2 h3 h4 new_id
0 foo v1 ... ... foo1
1 foo v2 ... ... foo1
2 foo v1 ... ... foo2
3 foo v2 ... ... foo2
4 foo v1 ... ... foo3
5 foo v2 ... ... foo3
6 foo v1 ... ... foo4
7 foo v2 ... ... foo4
8 bar v5 ... ... bar1
9 bar v6 ... ... bar1
10 bar v7 ... ... bar1
11 bar v5 ... ... bar2
12 bar v6 ... ... bar2
13 bar v7 ... ... bar2
关于python - 添加新列指示 pandas 数据框中的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64203779/