在Datafrane Pandas中将Object dtype列转换为Number Dtype

时间:2016-09-30 22:32:39

标签: python pandas

尝试回答此问题Get List of Unique String per Column我们遇到了与数据集不同的问题。当我将此CSV文件导入数据框时,每列都是OBJECT类型,我们需要将只有数字的列转换为实数(数字)dtype,将那些不是数字的列转换为字符串dtype。

有没有办法实现这个目标?

Download the data sample from here

我尝试过以下文章Pandas: change data type of columns中的代码,但没有效果。

df = pd.DataFrame(a, columns=['col1','col2','col3'])

一如既往地感谢您的帮助

1 个答案:

答案 0 :(得分:1)

选项1
pd.to_numeric

中使用apply
df.apply(pd.to_numeric, errors='ignore')

选项2
pd.to_numeric

上使用df.values.ravel
cvrtd = pd.to_numeric(df.values.ravel(), errors='coerce').reshape(-1, len(df.columns))
pd.DataFrame(np.where(np.isnan(cvrtd), df.values, cvrtd), df.index, df.columns)

<强> 注意
这些并不完全相同。对于包含混合值的某些列,选项2会转换它可以执行的操作,而选项2会将该列中的所有内容都保留为对象。查看您的文件,我会选择选项1。

时间

df = pd.read_csv('HistorianDataSample/HistorianDataSample.csv', skiprows=[1, 2])

enter image description here