在我的数据集中,我有这样一个特性(称为Size
):
import pandas as pd
dit={"Size" : ["0","0","5mm","12-15","3-10"] }
dt = pd.DataFrame(data=dit)
此功能指定一个范围内的大小(包括最小值和最大值)或一个特定的数字。你知道吗
现在,我想用每个范围的最大值替换这些值。你知道吗
所以,在我的例子中,输出应该是
dit={"Size" : ["0","0","5mm","15mm","10mm"] }
这就是我尝试过的:
import re
dt = re.split("-",dt.loc[:,"Size"])
但是,它抱怨:
TypeError: expected string or bytes-like object
这是有意义的,因为dt.loc[:," Size (in mm)"]
的类型是:
pandas.core.series.Series
我的问题是,如何在没有循环的情况下简单地更新此列?
你可以用
输出:
正则表达式匹配
(\d+)
-第1组:一个或多个数字(?:mm)?
-可选的mm
字符序列-
-连字符(\d+)
-第2组:一个或多个数字(?:mm)?
--可选的mm
字符序列。你知道吗str(max(int(z.group(1)), int(z.group(2)))) + "mm"
保留两组中数字的最大值,并在末尾附加mm
。你知道吗这个表达式可能返回所需的输出,我假设
mm
不是所需的:输出
使用简单的掩码和
Series.apply
函数:'-?\d+mm$'
模式详细信息:-?
-匹配可选的-
字符\d+mm$
-匹配一个或多个数字\d
,后跟字符串$
末尾的mm
后缀相关问题 更多 >
编程相关推荐