Python 通过按正则表达式选择列来更改列的数据类型

Python 通过按正则表达式选择列来更改列的数据类型,python,python-3.x,regex,pandas,pandas-1.0,Python,Python 3.x,Regex,Pandas,Pandas 1.0,我有一个熊猫数据框,有很多列看起来像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 ... 需要选择所有这些列(确认为正则表达式),并将它们的数据类型从object更改为float。特别是,列看起来像p_d_d_c*和p_d_d_g*,它们都是对象类型,我想将它们更改为浮点类型。有没有

我有一个熊猫数据框,有很多列看起来像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 ...
需要选择所有这些列(确认为正则表达式),并将它们的数据类型从object更改为float。特别是,列看起来像p_d_d_c*和p_d_d_g*,它们都是对象类型,我想将它们更改为浮点类型。有没有办法通过使用正则表达式批量选择列并将它们更改为浮点类型

我尝试了来自的答案,但这需要很多时间和内存,因为我有数百个这样的专栏

    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


那么,如何批量选择列并使用regex更改它们的数据类型呢?

从同一个链接,并使用一些aType魔术

column\u vals=df.columns.maplambda x:x.startswithp\u d_ 列车温度=df.locaxis=1[列值] 列车温度=列车温度astypefloat 编辑:

要修改原始数据帧,请执行以下操作:

column_vals=[x代表df.columns中的x,如果x.starts带有p_d_d_] df[column\u vals]=df[column\u vals].astypefloat
从同一个链接,并与一些astype魔术

column\u vals=df.columns.maplambda x:x.startswithp\u d_ 列车温度=df.locaxis=1[列值] 列车温度=列车温度astypefloat 编辑:

要修改原始数据帧,请执行以下操作:

column_vals=[x代表df.columns中的x,如果x.starts带有p_d_d_] df[column\u vals]=df[column\u vals].astypefloat 试试这个:

import pandas as pd

# sample dataframe
df = pd.DataFrame(data={"co1":[1,2,3,4], "co22":[4,3,2,1], "co3":[2,3,2,4], "abc":[5,4,3,2]})

# select all columns which have co in it
floatcols = [col for col in df.columns if "co" in col]

for floatcol in floatcols:
    df[floatcol] = df[floatcol].astype(float)
试试这个:

import pandas as pd

# sample dataframe
df = pd.DataFrame(data={"co1":[1,2,3,4], "co22":[4,3,2,1], "co3":[2,3,2,4], "abc":[5,4,3,2]})

# select all columns which have co in it
floatcols = [col for col in df.columns if "co" in col]

for floatcol in floatcols:
    df[floatcol] = df[floatcol].astype(float)

你能简单地解释一下你想做什么吗?您将字符转换为浮点值的规则是什么?您是否尝试选择符合某个正则表达式的列?或者您正在尝试将包含对象数据字符的序列转换为浮点数?我正在尝试选择符合某个正则表达式的列,并将所有这些选定列从对象类型更改为浮点数类型。明白了。看到我下面的解决方案,你能简单地解释一下你想做什么吗?您将字符转换为浮点值的规则是什么?您是否尝试选择符合某个正则表达式的列?或者您正在尝试将包含对象数据字符的序列转换为浮点数?我正在尝试选择符合某个正则表达式的列,并将所有这些选定列从对象类型更改为浮点数类型。明白了。请参阅下面我的解决方案,Hi@apurvmishra99,它不会改变原始数据帧。我错加了火车温度。只有一个数据帧dfHi@apurvmishra99,它不会改变原始数据帧。我错加了火车温度。只有一个数据帧DFI有没有加快速度的方法?特别是使用astype的行?有没有办法加快速度?特别是astype?