使用 pandas lib(数据框)从列中提取值

新手编程

原始数据框:

日期 细节
22 年 3 月 31 日 我和家人在家看 Netflix 4 小时
22 年 1 月 4 日 我步行到市场3公里,花了11.54美元
02/04/22 我的狗咬我,我去医院,花了 29.99 美元
22 年 3 月 4 日 我在 Steam 上买了一个游戏 7 游戏花了 19.23 美元

结果数据框:

日期 细节 成本
22 年 3 月 31 日 我和家人在家看 Netflix 4 小时 0
22 年 1 月 4 日 我步行到市场3公里,花了11.54美元 11.54
02/04/22 我的狗咬我,我去医院,花了 29.99 美元 29.99
22 年 3 月 4 日 我在 Steam 上买了一个游戏 7 游戏花了 19.23 美元 19.23

描述我的问题:

  • 如果详细信息列不包含以 sp.. 开头并以美元结尾的特定字符串,则Cost col中的值为零。

  • 如果详细信息列确实包含以 sp.. 开头并以美元结尾的特定字符串,则Cost col中的值等于特定字符串中间的值,该字符串以 sp.. 开头并以美元结尾。

我尝试使用正则表达式,但它的第一个 int 包含在 col 中

| 22 年 1 月 4 日 | 我步行3公里到市场花了11.54美元| 3 |

格比兹利

您应该能够使用以下形式的正则表达式模式:

df['Cost'] = df['Detail'].str.extract(r'sp\D*([\d\.]*)\D*dollar')

这将查找文字字符串sp,然后查找其后的任何非数字字符。捕获组(由 表示())查找代表美元金额的任何数字或句点字符。这是返回到Cost列的内容。模式的最后一部分允许在美元金额之后使用任意数量的非数字字符,然后是文字字符串dollar

pd.NA然后可以将没有成本的for 行替换为0

df['Cost'] = df['Cost'].replace({pd.NA: 0})

如果您想进行任何增强,我使用此站点来测试正则表达式:https ://regexr.com/6ir6o

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用tidyr从列中提取值

使用开始和结束时间从单独的数据框中提取值

在pandas数据框中提取嵌套的JSON

在pandas数据框列中使用整数以从另一列内的列表中提取特定值

我正在使用pandas从数据框中提取两列,但其中一列成为索引,然后在尝试访问该列时出现关键错误

Python Pandas根据最小索引从数据框中提取值

使用pandas从字典列中提取值

根据字符串列表从pandas数据框中提取值

如何使用循环从Pandas数据框中获取值?

使用熊猫从数据框中提取的列中删除小数

使用列作为列索引从R中的数据框中提取值

使用正则表达式从pandas数据框中的列中提取数据

如何使用矩阵从数据框中提取值?

从作为字典的Pandas列中提取值

Pandas-根据某些键值从数据框中提取值

按日期排序并使用Pandas数据框从第二列中提取唯一值

使用purrr根据条件从嵌套数据框中提取值

如何仅从pandas数据框中提取列标签?

在向量中使用按行列索引从数据框中提取值

从pandas数据框中提取4位列的名称

pandas DataFrame:在 2 列数据框中提取数据

使用 Pandas 从 CSV 文件中提取值

从 Pandas 列的数组类型中提取值

如何从 Pandas 数据框中提取一列以便独立使用它?

根据另一列中的条件从 Pandas 数据框中提取值

使用 R 从数据框列中提取列表元素

从属于pandas数据框指定的间隔的列表中提取值

如何使用 for 循环从数据框中提取列

使用 selenium 从 web 中提取数据并将其插入到 pandas 数据框中