所以我得到了一个至少有2-3列的数据框,其编号从1到3000, 并且数字以逗号开头。我需要将所有相关列中的数字转换为float或int。这是我的Dataframe的示例:
data = pd.read_csv('exampleData.csv')
data.head(10)
Out[179]:
Rank Total
1 2
20 40
1,200 1,400
NaN NaN
从示例中可以看到我的数据框由数字,带逗号的数字和一些NaN组成。我在这里阅读了几篇有关转换为float或int的文章,但是我总是收到诸如“ str”的错误消息对象没有属性“类型”。 对于几列,我的方法如下:
cols = ['Rank', 'Total']
data[cols] = data[cols].apply(lambda x: pd.to_numeric(x.astype(str)
.str.replace(',',''), errors='coerce'))
答案 0 :(得分:2)
使用参数thousands
。
pd.read_csv('exampleData.csv', thousands=',')
答案 1 :(得分:1)
John的解决方案不适用于多个逗号(例如1,384,496)的数字。
更具可扩展性的解决方案是只做
data = data.replace({",":""}, regex=True)
然后将字符串转换为数字。
答案 2 :(得分:0)
Pandas read_csv()带有许多参数,这些参数使您可以控制字段的转换方式。来自the documentation:
decimal : str, default ‘.’
Character to recognize as decimal point (e.g. use ‘,’ for European data).
所以,这是个疯狂的主意:使用关键字参数“ decimal =','”转换数字字段。然后,将数字字段乘以1000。