【发布时间】:2018-02-17 04:41:58
【问题描述】:
我在 pandas 中有一个数据框,例如:
0 1 2
([0.8898668778942382 0.89533945283595] 0)
([1.2632564814188714 1.0207660696232244] 0)
([1.006649166957976 1.1180973832359227] 0)
([0.9653632916751714 0.8625538463644129] 0)
([1.038366333873932 0.9091449796555554] 0)
所有值都是字符串。我想删除所有特殊字符并转换为双精度。我想应用一个函数来删除所有特殊字符,除了点之外的
import re
re.sub('[^0-9.]+', '',x)
所以我想在数据框的所有单元格中应用它。我该怎么做?我找到了 df.applymap 函数,但我不知道如何将字符串作为参数传递。我试过了
def remSp(x):
re.sub('^[0-9]+', '',x)
df.applymap(remSp())
但我不知道如何将单元格传递给函数。有更好的方法吗?
谢谢
【问题讨论】:
-
通过
remSp不带(),参数是函数本身,而不是调用的结果 -
applymap 函数将对数据框中的每个项目调用
remSp -
你传递的是寻找
df.applymap(remSp),注意,你不想在传递之前调用函数,.applymap把函数当作一个参数。请注意,您可能希望以正则表达式模式将.添加到您的组... -
我试过这个 [ df.applymap(remSp) ]但是返回一个所有值都没有的数据框
-
@MichailN 是的,因为
remSp总是以您定义的方式返回None...
标签: python regex pandas dataframe data-manipulation