Python 基于其他柱的结构在pandas中创建新柱
我有一个如下所示的数据表:Python 基于其他柱的结构在pandas中创建新柱,python,pandas,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 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})都是一些字符串。尝试
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
所以你只想用字母
b
替换字母m
?@Psidom哦,不,对不起,我不太清楚。F列中的值是字符串,M列也是如此。B列应该是这样的。所有这些f{i}和m{i}都是一些字符串。那么逻辑是什么呢?行数按列分组,前面有字母b
?@Psidom。逻辑如下:三个ms对应f1,一个m对应f2,两个ms对应f3。所有的m{i}对于f{i}都是不同的,也就是说,f1的m1与f2的m1不同,B列应该是这样的。@Foobard是我的答案,你在找什么?如果没有,我会删除。哦,看起来这正是我要找的!非常感谢你,当然。很高兴有帮助!我知道我必须按F分组,但我不知道如何增加b的索引。完美的