如何确保在 Python 中将数值作为“整数”或“浮点数”摄取

问题描述 投票:0回答:1

我有一个大型数据集,该数据集源自 CSV 文件的摄取。每次我使用 df = pd.read_csv 提取数据时,数据集中的特征都显示为“对象”。这引出了以下问题:

  1. 如何确保整数和浮点数作为整数和浮点数而不是“对象”被拉入?我以前从未见过这个“对象”问题。
  2. 有没有办法将“object”转换为“int”或“float”,因为我没有看到一系列命令可以让我这样做?

感谢您提前输入。

我已经看过并尝试了一切;我看不到转换“对象”的方法 我不知道这个数据导入问题的原因。

python pandas object types data-conversion
1个回答
0
投票

原帖没有提供 代表。 来,让我为你做一个:

>>> df = pd.DataFrame({'a': [1], 'b': [2]})
>>> df.dtypes
a    int64
b    int64
dtype: object
>>> 
>>> df = pd.DataFrame({'a': [1, 8], 'b': [2, 'nine']})
>>> df.dtypes
a     int64
b    object
dtype: object
>>> df
   a     b
0  1     2
1  8  nine

使用 .astype() 在这个 yields 上没有任何乐趣,它只是爆炸了 ValueError 报告“九”是无效文字。

但是我们可以清理那个柱子。 大熊猫

NA
来救援!

def clean(n):
    try:
        int(n)  # Evaluated for side effects -- will `raise` if invalid.
        return n
    except ValueError:
        return pd.NA  # Roughly this is a `NaN`, but it's not floating point.
>>> df['b_clean'] = df.b.apply(clean).astype('Int64')
>>> df.dtypes
a           int64
b          object
b_clean     Int64
dtype: object
>>> df
   a     b  b_clean
0  1     2        2
1  8  nine     <NA>

随意覆盖

df['b']
如果你不再 需要旧的垃圾值。

© www.soinside.com 2019 - 2024. All rights reserved.