【发布时间】:2020-11-10 17:13:43
【问题描述】:
我有一个 Pandas 数据框,其中有很多列看起来像 p_d_d_c0、p_d_d_c1、... p_d_d_g1、p_d_d_g2、...
df =
a b c p_d_d_c0 p_d_d_c1 p_d_d_c2 ... p_d_d_g0 p_d_d_g1 ...
需要选择所有这些与正则表达式确认的列,并且需要将它们的数据类型从对象更改为浮点数。特别是,列看起来像 p_d_d_c* 和 p_d_d_g* 它们都是 object 类型,我想将它们更改为 float 类型。有没有办法通过使用正则表达式批量选择列并将它们更改为浮点类型?
我尝试了here 的答案,但由于我有数百个这样的列,这需要大量时间和内存。
df[df.filter(regex=("p_d_d_.*"))
我也试过了:
df.select(lambda col: col.startswith('p_d_d_g'), axis=1)
但是,它给出了一个错误:
AttributeError: 'DataFrame' object has no attribute 'select'
我的熊猫版本是1.0.1
那么,如何批量选择列并使用正则表达式更改其数据类型?
【问题讨论】:
-
您能简要解释一下您要做什么吗?您将字符转换为浮点值的规则是什么?
-
您是否要选择符合某个正则表达式的列?或者您是否正在尝试将包含对象数据(字符)的系列转换为浮点数?
-
我正在尝试选择符合某个正则表达式的列,并将所有这些选定的列从
object类型更改为float类型 -
知道了。请参阅下面的解决方案,
标签: python python-3.x regex pandas pandas-1.0