1

我有一个 !cat 的 csv 文件,看起来像这样

,City,region,Res_Comm,mkt_type,Quradate,National_exp,Alabama_exp,Sales_exp,Inventory_exp,Price_exp,Credit_exp
0,Dothan,South_Central-Montgomery-Auburn-Wiregrass-Dothan,Residential,Rural,2010-01-15,2,2,3,2,3,3
1,Dothan,South_Central-Montgomery-Auburn-Wiregrass-Dothan,Residential,Suburban_Urban,2010-07-15,2,2,3,2,2,2
2,Dothan,South_Central-Montgomery-Auburn-Wiregrass-Dothan,Residential,Suburban_Urban,2011-01-15,2,2,2,2,2,2

当我通过 read_csv 读取它时,我得到一个数据框,所有 ..._exp 字段都是我需要进行基本数学运算的单位数字(当我将 read-table 与文件的另一个变体一起使用时,它工作得很好)

df = pd.io.parsers.read_csv('/home/tom/Dropbox/Projects/annonallanswerswithmaster1012013.csv',index_col=0,parse_dates=['Quradate'])

但是当我去做任何数学运算时,我会收到一个类型错误,指示该列是字符串,例如:

df['Credit_exp'] = df['Credit_exp']/2
TypeError: unsupported operand type(s) for /: 'str' and 'int'

我看不到如何将其转换为 int?我尝试在文件读取选项中指定像 ,dtype={'Credit_exp': np.int32, ... 这样的字段类型,但它不喜欢那样,我尝试进行像 df['Credit_exp'] = int 这样的类型转换(df['Credit_exp']) 这只是给了我:

TypeError: only length-1 arrays can be converted to Python scalars

所以有一些明显的东西我错过了......

4

1 回答 1

3

尝试以下操作:

df.Credit_exp.astype('int')

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.astype.html

于 2013-10-23T22:29:59.383 回答