我有一个大型数据集,该数据集源自 CSV 文件的摄取。每次我使用 df = pd.read_csv 提取数据时,数据集中的特征都显示为“对象”。这引出了以下问题:
感谢您提前输入。
我已经看过并尝试了一切;我看不到转换“对象”的方法 我不知道这个数据导入问题的原因。
原帖没有提供 代表。 来,让我为你做一个:
>>> 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']
如果你不再
需要旧的垃圾值。