在pandas中根据另一个的结构创建一个新列

时间:2017-09-09 00:14:57

标签: python pandas

我有一个如下所示的数据表:

F    M

f1   m1
f1   m2
f1   m3
f2   m1
f3   m1
f3   m2

我需要添加由str类型的对象组成的第三列。所以表格看起来应该是这样的:

F    M   B

f1   m1  'b1'
f1   m2  'b2'
f1   m3  'b3'
f2   m1  'b1'
f3   m1  'b1'
f3   m2  'b2'

在熊猫中这样做的正确方法是什么?有类似的问题,但我找不到类似的任务,我无法弄清楚如何构建这个B列。

修改

抱歉不够清楚。表中的所有值(f {i}和m {i})都是一些字符串。

1 个答案:

答案 0 :(得分:1)

尝试groupby.cumcount基本上为每个 F 提供行号,然后您可以将行号与b之类的字母连接起来:

df['B'] = 'b'+df.groupby('F').cumcount().add(1).astype(str)

df
#    F   M   B
#0  f1  m1  b1
#1  f1  m2  b2
#2  f1  m3  b3
#3  f2  m1  b1
#4  f3  m1  b1
#5  f3  m2  b2