gpt4 book ai didi

Python:用reg的输出替换所有列

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:34 24 4
gpt4 key购买 nike

在我的数据集中,我有一个像这样的特征(称为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

我的问题是,我怎样才能在不循环的情况下简单地更新此列?

最佳答案

你可以使用

import pandas as pd
import re

dit={"Size" : ["0","0","5mm","12-15","3-10"] }
dt = pd.DataFrame(data=dit)
rx = r'(\d+)(?:mm)?-(\d+)(?:mm)?'
dt['Size']=dt['Size'].apply(lambda x: re.sub(rx, lambda z: str(max(int(z.group(1)), int(z.group(2)))) + "mm", x))

输出:

>>> dt
Size
0 0
1 0
2 5mm
3 15mm
4 10mm

正则表达式匹配

  • (\d+) - 第 1 组:一个或多个数字
  • (?:mm)? - 一个可选的 mm 字符序列
  • - - 连字符
  • (\d+) - 第 2 组:一个或多个数字
  • (?:mm)? - - 一个可选的 mm 字符序列。

str(max(int(z.group(1)), int(z.group(2)))) + "mm" 保留两组数字的最大值并在末尾附加 mm

关于Python:用reg的输出替换所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57130915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com