鱼C论坛

 找回密码
 立即注册
查看: 285|回复: 3

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

[复制链接]
发表于 2024-6-19 22:03:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


事假0.5天,因要回村开会   事假
事假1天,去喝喜酒   事假
休年假3天   年假
事假1天,老人家病了,要去医院
事假0.5天,要去医院复查身体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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: [float(i) for i in x])

print(df)

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这样出来每一行都是一个列表,我要的那一列是浮点数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 00:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表