如何在 Pandas 中将对象转换为整数或浮点数

3

我在加载的Excel文件上使用df.info方法后,得到以下数据:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30000 entries, 1 to 30000
Data columns (total 25 columns):
 #   Column      Non-Null Count  Dtype 
---  ------      --------------  ----- 
 0   Unnamed: 0  30000 non-null  object
 1   X1          30000 non-null  object
 2   X2          30000 non-null  object
 3   X3          29669 non-null  object
 4   X4          29677 non-null  object
 5   X5          30000 non-null  object
 6   X6          30000 non-null  object
 7   X7          30000 non-null  object
 8   X8          30000 non-null  object
 9   X9          30000 non-null  object
 10  X10         30000 non-null  object
 11  X11         30000 non-null  object
 12  X12         30000 non-null  object
 13  X13         30000 non-null  object
 14  X14         30000 non-null  object
 15  X15         30000 non-null  object
 16  X16         30000 non-null  object
 17  X17         30000 non-null  object
 18  X18         30000 non-null  object
 19  X19         30000 non-null  object
 20  X20         30000 non-null  object
 21  X21         30000 non-null  object
 22  X22         30000 non-null  object
 23  X23         30000 non-null  object
 24  Y           30000 non-null  object
dtypes: object(25)
memory usage: 2.9+ MB

我不知道为什么所有的数据类型都是对象,尽管它们中的大多数具有数值。

如何修复数据集的数据类型?

2个回答

3
让我们尝试使用to_numeric函数。
df = pd.DataFrame({'1':['1','2'],'2':['a','b']})
df = df.apply(pd.to_numeric,errors='ignore')

检查

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   1       2 non-null      int64 
 1   2       2 non-null      object
dtypes: int64(1), object(1)
memory usage: 88.0+ bytes

0

例如尝试:

df['X1'] = df['X1'].astype(str).astype(int)

如果您想格式化所有列,请尝试:

df = df.astype(int)

这是因为当你导入一个 .csv 文件时,大多数列都会被转换成对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接