将函数应用于表中除一列以外的所有列

2024-09-30 02:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望将函数应用于pandas中除一列以外的所有列,同时保持该列的原始状态。我有一个可以满足我需要的工作版本,但对于如此简单的东西来说,它似乎异常长。我想知道是否有更好的方法

df = pd.DataFrame(columns = ['firstcol','secondcol','thirdcol'],
     data=[['a1',1,'a6.1'],['b2',3,'b9.3'],['c12',4,'c2']])

我的数据帧由字符串和整数组成。每一列都不包含特定的类型,我希望标准化,以便所有列都是数字的(整数或浮点数,因为我有一些十进制值)。所以,在上面的玩具数据中,我需要转换第一列和第三列,而不处理第二列

df.loc[:, df.columns != 'secondcol'] = df.loc[:, df.columns != 'secondcol'].applymap(lambda x: float(re.sub(r'[^\d.]','', x)))

为清楚起见,此行:(1)指定除名为“secondcol”的列之外的所有列,(2)使用applymaplambda函数删除非数字(或十进制)字符,(3)转换为浮点

这会产生所需的输出,但正如我所说的,它的可读性不强。我是不是偶然发现了最好的方法,还是有更简单的选择


Tags: columns数据方法lambda函数版本pandasdf

热门问题