如何将带有dtype的列作为对象转换为Pandas Dataframe中的字符串

时间:2015-11-27 12:43:51

标签: python pandas

当我将csv文件读取到pandas数据帧时,每列都会转换为自己的数据类型。我有一个转换为对象的列。我想为此列执行字符串操作,例如拆分值和创建列表。但是没有这样的操作是可能的,因为它的dtype是对象。任何人都可以让我知道将列的所有项目转换为字符串而不是对象的方法吗?

我尝试了几种方法,但没有任何效果。我使用了astype,str(),to_string等。

a=lambda x: str(x).split(',')
df['column'].apply(a)

df['column'].astype(str)

5 个答案:

答案 0 :(得分:22)

由于字符串数据类型具有可变长度,因此默认情况下将其存储为对象dtype。如果你想将它们存储为字符串类型,你可以这样做。

df['column'] = df['column'].astype('|S80') #where the max length is set at 80 bytes,

或者

df['column'] = df['column'].astype('|S') # which will by default set the length to the max len it encounters

答案 1 :(得分:15)

您是否尝试将其分配回专栏?

df['column'] = df['column'].astype('str') 

参考这个question,pandas数据帧存储指向字符串的指针,因此它是类型的 '宾语'。根据{{​​3}},您可以尝试:

df['column_new'] = df['column'].str.split(',') 

答案 2 :(得分:8)

不直接回答问题,但可能有助于其他人。

我有一个名为Volume的列,同时包含-(无效/ NaN)和使用,格式化的数字

df['Volume'] = df['Volume'].astype('str')
df['Volume'] = df['Volume'].str.replace(',', '')
df['Volume'] = pd.to_numeric(df['Volume'], errors='coerce')

需要投射到字符串才能将其应用于str.replace

pandas.Series.str.replace
pandas.to_numeric

答案 3 :(得分:3)

您可以尝试使用df['column'].str.然后使用任何字符串函数。 Pandas文档包括split

之类的文档

答案 4 :(得分:-7)