试图回答这个问题 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,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39800997/