python改变列的数据类型_python – Pandas:更改列的数据类型

您可以使用

pd.to_numeric(在版本0.17中引入)将列或Series转换为数字类型。该函数还可以使用apply应用于DataFrame的多个列。

重要的是,该函数还接受一个错误关键字参数,它允许您强制非数字值为NaN,或者简单地忽略包含这些值的列。

示例使用如下所示。

单列/系列

这里有一个使用一系列字符串的例子,它有一个对象dtype:

>>> s = pd.Series(['1', '2', '4.7', 'pandas', '10'])

>>> s

0 1

1 2

2 4.7

3 pandas

4 10

dtype: object

该函数的默认行为是,如果它不能转换一个值。在这种情况下,它不能处理字符串’熊猫’:

>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')

ValueError: Unable to parse string

而不是失败,我们可能想要“熊猫”被认为是一个缺失/坏值。我们可以强制无效值到NaN,如下所示:

>>> pd.to_numeric(s, errors='coerce')

0 1.0

1 2.0

2 4.7

3 NaN

4 10.0

dtype: float64

第三个选项只是在遇到无效值时忽略操作:

>>> pd.to_numeric(s, errors='ignore')

# the original Series is returned untouched

多列/整个DataFrames

我们可能希望将此操作应用于多个列。依次处理每一列是乏味的,所以我们可以使用DataFrame.apply使该函数对每一列起作用。

借用DataFrame的问题:

>>> a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]

>>> df = pd.DataFrame(a, columns=['col1','col2','col3'])

>>> df

col1 col2 col3

0 a 1.2 4.2

1 b 70 0.03

2 x 5 0

然后我们可以写:

df[['col2','col3']] = df[['col2','col3']].apply(pd.to_numeric)

现在“col2”和“col3”根据需要具有dtype float64。

但是,我们可能不知道哪些列可以可靠地转换为数字类型。在这种情况下,我们可以写:

df.apply(lambda x: pd.to_numeric(x, errors='ignore'))

然后该函数将应用于整个DataFrame。可以转换为数字类型的列将被转换,而不能(例如,它们包含非数字字符串或日期)的列将被单独保留。

还有用于转换为日期和时间戳的pd.to_datetime和pd.to_timedelta。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值