将Pandas Dataframe转换为以逗号浮动时出错

时间:2018-06-25 00:40:57

标签: python pandas dataframe

所以我得到了一个至少有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'))

3 个答案:

答案 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。