Python 如何将字符串附加到Pandas中的int/float数据帧

Python 如何将字符串附加到Pandas中的int/float数据帧,python,python-3.x,pandas,Python,Python 3.x,Pandas,这是我的原始数据帧: >>> df c0 c1 c2 c3 c4 c5 c6 c7 c8 0 key0:j key1:z key2:b key3:bsy afj upz 343 13 ruhwd 1 key0:u key1:i key2:a key3:dvp ibt dxv 154 0 adsif 2 key0:t key1:a

这是我的原始数据帧:

  >>> df
           c0      c1      c2        c3   c4   c5   c6  c7     c8
    0  key0:j  key1:z  key2:b  key3:bsy  afj  upz  343  13  ruhwd
    1  key0:u  key1:i  key2:a  key3:dvp  ibt  dxv  154   0  adsif
    2  key0:t  key1:a  key2:a  key3:jqj  dtd  yxq  540  49  kxthz
    3  key0:j  key1:z  key2:b  key3:bsy  afj  upz  322  13  ruhwd
    4  key0:j  key1:z  key2:b  key3:bsy  afj  upz  397  13  ruhwd
    5  key0:u  key1:i  key2:a  key3:dvp  ibt  dxv  110   0  adsif
    6  key0:t  key1:a  key2:a  key3:jqj  dtd  yxq  526  49  kxthz
    7  key0:t  key1:u  key2:g  key3:nfk  ekh  trc   85  83  xppnl
我使用以下公式计算熊猫中c6与c0之和:

df.groupby(['c0'])['c6'].sum().reset_index()
输出:

       c0     0
0  key0:j  1062
1  key0:t  1151
2  key0:u   264
在这里,我希望groupby的输出是这样的,带有sum的列也应该附加一个字符串“abc”。如下图所示:

    c0        0
0  key0:j     abc1062
1  key0:t     abc1151
2  key0:u     abc264
我浏览了很多帖子,没有得到想要的答案。任何帮助都将不胜感激。

您可以使用以下方法选择第二列并将
int
列转换为
string

或:

如果列为
a
b

print df
        a     b
0  key0:j  1062
1  key0:t  1151
2  key0:u   264

df['b'] = 'abc' + df['b'].astype(str)
print df
        a        b
0  key0:j  abc1062
1  key0:t  abc1151
2  key0:u   abc264
编辑:

您可以尝试,但我认为它比上面的解决方案慢:

df = df.groupby(['c0'])['c6'].apply(lambda x: 'abc' + str( x.sum())).reset_index()
print df
       c0       c6
0  key0:j  abc1062
1  key0:t  abc1151
2  key0:u   abc264

重置索引之前分组后,您可以
应用
lambda

In [19]: df.groupby(['c0'])['c6'].sum().apply(lambda x: 'abc' + x.astype(str)).reset_index()
Out[19]:
       c0       c6
0  key0:j  abc1062
1  key0:t  abc1151
2  key0:u   abc264
或者您可以使用groupby
作为_index
参数,然后检查您的列名
c6

In [29]: df.groupby(['c0'], as_index=False)['c6'].sum().apply(lambda x: 'abc' + x.astype(str) if x.name=='c6' else x)
Out[29]:
       c0       c6
0  key0:j  abc1062
1  key0:t  abc1151
2  key0:u   abc264

你是说预编曲,对吗?你需要的是
“abc”1062
还是
abc1062
?@Anton protopov我需要的是abc1062@pp_:是的,我是说prepend@MayankPorwal您能在分组前附加原始数据帧吗?Hi@jezrael数值为10621151264的列基本上是groupby命令的输出。所以,我想要的是,在groupby计算结果时,它还应该在总和中附加字符串abc。
In [19]: df.groupby(['c0'])['c6'].sum().apply(lambda x: 'abc' + x.astype(str)).reset_index()
Out[19]:
       c0       c6
0  key0:j  abc1062
1  key0:t  abc1151
2  key0:u   abc264
In [29]: df.groupby(['c0'], as_index=False)['c6'].sum().apply(lambda x: 'abc' + x.astype(str) if x.name=='c6' else x)
Out[29]:
       c0       c6
0  key0:j  abc1062
1  key0:t  abc1151
2  key0:u   abc264