最近我参加了一次面试测试,问题如下:
- 创建给定列表的数据帧,并为每个组分配自动递增的编号。lst=[A','B','C','A','A','B','D','E','F','F','Z']例如,如果A出现三次,那么第一个A将获得1秒,获得2,第三个将获得3,B也是如此,第一个B将获得1,第二个将获得2。。。。。,C.等
经过深思熟虑,我得出结论,我们需要添加另一列,显示给定字母表出现的次数,但我无法为其编写代码。
使用pandas.DataFrame
创建DataFrame,使用groupby
+cumcount
+add(1)
创建每个组的索引:
lst = ['A', 'B', 'C', 'A','A','B','D','E','F','F','Z']
df = pd.DataFrame({'col': lst})
df['idx'] = df.groupby('col').cumcount().add(1)
输出:
>>> print(df)
col idx
0 A 1
1 B 1
2 C 1
3 A 2
4 A 3
5 B 2
6 D 1
7 E 1
8 F 1
9 F 2
10 Z 1