Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于其他柱的结构在pandas中创建新柱_Python_Pandas - Fatal编程技术网

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的索引。完美的