试图回答这个问题 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
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])

python - 将数据帧 Pandas 中的 Object dtype 列转换为 Number Dtype-LMLPHP

关于python - 将数据帧 Pandas 中的 Object dtype 列转换为 Number Dtype,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39800997/

10-15 14:06