为什么即使在使用'astype'之后我也无法在python中更改列的数据类型

时间:2014-12-17 20:11:47

标签: python types pandas

我有一个数据帧'df'就是这样

a= (0,1,2,3...)
b = ('blue', 'red', 'brown', 'black')
c = ('new york', 'phoenix', 'chicago', 'orlando')
d = ('ny', 'phx', 'chi', 'ord')

我有一个需要字符串或unicode对象的函数func(d) 作为参数的类型d

例如:df ['d'] = func(df ['d'])

(我希望函数func()对d列中的每个项目进行操作)

如何将列'd'转换为字符串或unicode?它目前是一个系列,我得到了 错误“TypeError:期望的字符串或Unicode对象,系列找到”

我尝试过使用astype(str),但这似乎没有任何影响。

1 个答案:

答案 0 :(得分:1)

IIUC,你的函数可能不支持字符串序列作为输入,只支持字符串。您可以使用apply单独传递值:

>>> df = pd.DataFrame({"d": ['ny', 'phx', 'chi', 'ord']})
>>> def func(x): return x.upper()
>>> df
     d
0   ny
1  phx
2  chi
3  ord

[4 rows x 1 columns]
>>> df["d"] = df["d"].apply(func)
>>> df
     d
0   NY
1  PHX
2  CHI
3  ORD

[4 rows x 1 columns]