laiyuanjie 发表于 2024-6-19 22:03:26

我有这么一个DF的其中一列,我要提取每一行中的数字

如下,有整数,有浮点数,


事假0.5天,因要回村开会   事假
事假1天,去喝喜酒   事假
休年假3天   年假
事假1天,老人家病了,要去医院
事假0.5天,要去医院复查身体

FishC 发表于 2024-6-19 22:03:44

嗨!看起来你想从DataFrame中的文本列中提取数字对吧?没问题,我们可以用正则表达式来做这件事。Python中的`re`模块可以帮助我们处理这种情况。

假设你有一个名为`df`的DataFrame,其中有一个叫做`原始文本`的列包含了像这样的文本:

事假0.5天,因要回村开会   事假
事假1天,去喝喜酒   事假
休年假3天   年假
事假1天,老人家病了,要去医院
事假0.5天,要去医院复查身体

现在让我们编写代码来提取这些文本中的数字部分:

import pandas as pd
import re

# 假设df是你的DataFrame,'原始文本'列包含了这些文本
data = {'原始文本': [
    '事假0.5天,因要回村开会   事假',
    '事假1天,去喝喜酒   事假',
    '休年假3天   年假',
    '事假1天,老人家病了,要去医院',
    '事假0.5天,要去医院复查身体'
]}

df = pd.DataFrame(data)

# 使用正则表达式提取数字
df['提取的数字'] = df['原始文本'].apply(lambda x: re.findall(r'\d+\.\d+|\d+', x))

# 将提取的数字转换成浮点数
df['提取的数字'] = df['提取的数字'].apply(lambda x: )

print(df)

这段代码做了以下几件事情:
1. 导入了`pandas`和`re`模块。
2. 创建了一个示例的DataFrame `df`,并包含了示例的文本数据。
3. 使用`apply`函数结合正则表达式`re.findall`来提取每行文本中的数字部分,结果存储在新列`提取的数字`中。
4. 最后,将提取的字符串数字转换成浮点数列表。

运行这段代码后,你会得到一个新的DataFrame `df`,其中包含了从原始文本中提取出的数字列表。希望这可以帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

laiyuanjie 发表于 2024-6-19 22:08:49

FishC 发表于 2024-6-19 22:03
嗨!看起来你想从DataFrame中的文本列中提取数字对吧?没问题,我们可以用正则表达式来做这件事。Python中 ...

这样出来每一行都是一个列表,我要的那一列是浮点数

FishC 发表于 2024-6-19 22:09:17

laiyuanjie 发表于 2024-06-19 22:08
这样出来每一行都是一个列表,我要的那一列是浮点数

好的,如果你想要的是直接提取浮点数而不是列表,我们可以改一下代码来确保每行提取到的数字直接作为浮点数保存。这里是改进后的代码:

import pandas as pd
import re

# 假设df是你的DataFrame,'原始文本'列包含了这些文本
data = {'原始文本': ['事假0.5天,因要回村开会 事假',
                   '事假1天,去喝喜酒 事假',
                   '休年假3天 年假',
                   '事假1天,老人家病了,要去医院',
                   '事假0.5天,要去医院复查身体']}
df = pd.DataFrame(data)

# 使用正则表达式提取数字并转换为浮点数
df['提取的数字'] = df['原始文本'].apply(lambda x: float(re.search(r'\d+\.\d+|\d+', x).group()))

print(df)

这段代码做了以下几件事情:
1. 使用正则表达式提取第一个匹配到的数字。
2. 将提取到的数字转换为浮点数并赋值给新列`提取的数字`。

运行这段代码后,你会得到一个新的DataFrame `df`,其中包含了从原始文本中提取出的浮点数。希望这可以帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 我有这么一个DF的其中一列,我要提取每一行中的数字