我使用Pandas / Python将查询日志作为表导入到数据框中,如下所示:
import pandas as pd
q_data_1 = pd.read_table('table_data.txt', skiprows=6, thousands=',')
我得到下表:
目前所有列的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'
答案 0 :(得分:2)
我建议使用convert_objects和astype方法。
因此,假设您的数据框名为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
。