2016-02-26 53 views
2

這是我原來的數據框:如何追加一個字符串爲int /浮dataframes在熊貓

>>> 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 

我使用這個計算大熊貓爲C0 C6的總和:

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 

我經歷了很多帖子,並無法得到所需的答案。任何幫助將不勝感激。

+0

你的意思是prepend,對吧? –

+0

你需要''abc「1062'還是'abc1062'? –

+0

@Anton Protopopov 我只需要abc1062 –

回答

1

你可以applylambda分組前後reset_index

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 as_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 
0

可以使用ix選擇第二列和astype轉換intstring

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

df.ix[:,1] = '"abc"' + df.ix[:,1].astype(str) 
print df 
     c0   0 
0 key0:j "abc"1062 
1 key0:t "abc"1151 
2 key0:u "abc"264 

或者:

df.ix[:,1] = 'abc' + df.ix[:,1].astype(str) 
print df 
     c0  0 
0 key0:j abc1062 
1 key0:t abc1151 
2 key0:u abc264 

如果列ab

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 
+0

您好@jezrael 列與數值1062,1151,264基本上GROUPBY命令的輸出。所以,我想要的是,在groupby計算結果時,它還應該將字符串abc附加到總和。 –

+0

答案已編輯。請檢查一下。 – jezrael