使用Pandas导入数据

时间:2013-05-24 18:05:09

标签: python pandas

我使用Pandas / Python将查询日志作为表导入到数据框中,如下所示:

import pandas as pd
q_data_1 = pd.read_table('table_data.txt', skiprows=6, thousands=',')

我得到下表:

  • Col 0 - index
  • 第1栏 - 查询字符串(例如'纽约新闻')
  • 第2组 - 综合浏览量(例如'10,102')
  • 第3栏 - 平均持续时间(例如'00:03:06')
  • 第4栏 - 新访问次数(例如'32 .4%')

目前所有列的dtype都是'object'。如何将col 2的dtype转换为整数,col 3转换为时间,col 4转换为百分比?

包含值为字符串的某些列可能有噪音(即包含实际文本字符串 - 尽管这些字符串的出现次数较少;因此每次上面的转换失败时我都希望将0替换为适当的dtype)。 / p>

提前致谢。

编辑:我试过了

q_data_1.convert_objects(convert_numeric=True).dtypes

和(列[1]是页面浏览量)

q_data_1[q_data_1.columns[1]] = q_data_1[q_data_1.columns[1]].convert_objects(convert_numeric=True)

哪个错误:

TypeError: convert_objects() got an unexpected keyword argument 'convert_numeric'

1 个答案:

答案 0 :(得分:2)

我建议使用convert_objectsastype方法。

因此,假设您的数据框名为df并且您希望首先确保第2列中的所有数据都是数字,您可以调用:

df[df.columns[2]] = df[df.columns[2]].convert_objects(convert_numeric=True)

虽然这会尝试将整个列转换为适当的数值,但您可能还没有整数类型。您可以通过以下方式进行跟进:

df[df.columns[2]] = df[df.columns[2]].astype('int')

我相信你只限于python和numpy类型,所以你可能不得不接受第4列的float