pandas:将多列转换为字符串

As3*_*tin 3 string python-2.7 pandas

我有一些专栏['a', 'b', 'c', etc.]a并且cfloat64while bis object

我想将所有列转换为字符串并保留nans。

尝试使用df[['a', 'b', 'c']] == df[['a', 'b', 'c']].astype(str)但留下空白的float64列。

目前我正在一一经历以下内容:

df['a'] = df['a'].apply(str)
df['a'] = df['a'].replace('nan', np.nan)
Run Code Online (Sandbox Code Playgroud)

最好的方法是使用.astype(str)然后替换''np.nan附带问题:和 之间有区别吗?.astype(str).apply(str)

示例输入:(dtypes:a=float64、b=object、c=float64)

a, b, c, etc.
23, 'a42', 142, etc.
51, '3', 12, etc.
NaN, NaN, NaN, etc.
24, 'a1', NaN, etc.
Run Code Online (Sandbox Code Playgroud)

所需的输出:(dtypes:a=对象,b=对象,c=对象)

a, b, c, etc.
'23', 'a42', '142', etc.
'51', 'a3', '12', etc.
NaN, NaN, NaN, etc.
'24', 'a1', NaN, etc.
Run Code Online (Sandbox Code Playgroud)

Raj*_*Raj 7

这将为您提供列名称列表

lst = list(df)
Run Code Online (Sandbox Code Playgroud)

这会将所有列转换为字符串类型

df[lst] = df[lst].astype(str)
Run Code Online (Sandbox Code Playgroud)