将数据框 Pandas 中的对象 dtype 列转换为数字 Dtype

rac*_*ler 3 python pandas

试图回答这个问题“获取每列的唯一字符串列表”,我们遇到了与我的数据集不同的问题。当我将此 CSV 文件导入数据帧时,每列都是 OBJECT 类型,我们需要将数字列转换为实数(数字)数据类型,将非数字列转换为字符串数据类型。

有办法实现这一点吗?

从这里下载数据样本

我尝试过以下文章Pandas:更改列的数据类型中的代码,但没有成功。

df = pd.DataFrame(a, columns=['col1','col2','col3'])
Run Code Online (Sandbox Code Playgroud)

一如既往地感谢您的帮助

piR*_*red 5

选项1
用于pd.to_numericapply

df.apply(pd.to_numeric, errors='ignore')
Run Code Online (Sandbox Code Playgroud)

选项 2
使用pd.to_numericdf.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)
Run Code Online (Sandbox Code Playgroud)

注意:
这些并不完全相同。对于某些包含混合值的列,选项 2 会尽可能转换,而选项 2 会将该列中的所有内容保留为对象。看了你的文件,我会选择选项1。


定时

df = pd.read_csv('HistorianDataSample/HistorianDataSample.csv', skiprows=[1, 2])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述