2013-07-30 161 views
46

我剛開始與熊貓一起工作。 我有一個數據幀在熊貓與混合的int和str數據列。我想連接數據幀中的第一列,這樣我必須將int列轉換爲str。 我試着做這樣的:將熊貓數據框中的列從int轉換爲字符串

mtrx['X.3'] = mtrx.to_string(columns = ['X.3']) 

或類似的

mtrx['X.3'] = mtrx['X.3'].astype(str) 

但在這兩種情況下,它不工作,我得到一個錯誤說「不能連接‘STR’和'int'對象「。兩個str列的Concat工作正常。

任何幫助將不勝感激!謝謝!

+0

http://stackoverflow.com/questions/22005911/convert-columns-to-string-in-pandas – kdauria

回答

59
In [16]: df = DataFrame(np.arange(10).reshape(5,2),columns=list('AB')) 

In [17]: df 
Out[17]: 
    A B 
0 0 1 
1 2 3 
2 4 5 
3 6 7 
4 8 9 

In [18]: df.dtypes 
Out[18]: 
A int64 
B int64 
dtype: object 

轉換一系列

In [19]: df['A'].apply(str) 
Out[19]: 
0 0 
1 2 
2 4 
3 6 
4 8 
Name: A, dtype: object 

In [20]: df['A'].apply(str)[0] 
Out[20]: '0' 

轉換整個幀

In [21]: df.applymap(str) 
Out[21]: 
    A B 
0 0 1 
1 2 3 
2 4 5 
3 6 7 
4 8 9 

In [22]: df.applymap(str).iloc[0,0] 
Out[22]: '0' 
+2

實施我真不明白,固定爲什麼,但mtrx ['X.3']。apply(str)對我來說不起作用:(dtype仍然顯示爲int64 23177行和X.3列的數據幀只有數字 In [21]: mtrx ['X.3']。dtype 輸出[21]:dtype('int64') – Malfet

+0

什麼版本的熊貓? – Jeff

+0

0.7.0,在Ubuntu系統上附帶python 2.7 – Malfet

40

數據幀列的變化數據類型:

爲INT:

df.column_name = df.column_name.astype(np.int64)

給STR:

df.column_name = df.column_name.astype(str)

+2

這很有吸引力,但是在使用'pd.Series(np.arange(1000000))'的測試中,它大約比@Jeff的'apply(str)'慢4倍。 –

+1

這適用於我。 'df ['A'] = df ['A']。apply(str)'也可以。 @Jeff提供的答案不適用於我。 –

6

警告給出兩種解決方案( astype()和應用()不無論是在南或無形式保存NULL值。

import pandas as pd 
import numpy as np 

df = pd.DataFrame([None,'string',np.nan,42], index=[0,1,2,3], columns=['A']) 

df1 = df['A'].astype(str) 
df2 = df['A'].apply(str) 

print df.isnull() 
print df1.isnull() 
print df2.isnull() 

我相信這是由to_string()

相關問題