将pandas数据框中的列从int转换为string

我刚刚开始与pandas合作。 我有pandas的数据框与混合的int和str数据列。 我想连接数据框中的第一列,做我必须将int列转换为str 。 我试过这样做:

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

或者像那样

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

但在这两种情况下,它不工作,我得到一个错误说:“不能连接”str“和”int“对象”。 Concat for two str列工作得很好。

任何帮助将不胜感激! 谢谢!

 In [16]: df = DataFrame(np.arange(10).reshape(5,2),columns=list('AB')) In [17]: df Out[17]: AB 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]: AB 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' 

更改DataFrame列的数据types:

以int:

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

为了str:

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

警告 :给定的两个解决scheme astype()和apply() 都不保留nan或Noneforms的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()