0

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

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

我得到下表:

  • 第 0 列 - 索引
  • Col 1 - 查询字符串(例如“纽约新闻”)
  • 第 2 列 - 综合浏览量(例如“10,102”)
  • Col 3 - 平均持续时间(例如'00:03:06')
  • Col 4 - % 新访问(例如“32.4%”)

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

一些包含字符串值的列可能是嘈杂的(即包含实际的文本字符串——尽管这些字符串的出现率很低;所以每次上述覆盖失败时,我想用 0 替换为适当的 dtype)。

提前致谢。

编辑:我试过

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'
4

1 回答 1

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 类型,因此您可能不得不满足float于第 4 列。

于 2013-05-24T18:27:16.183 回答