首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Pandas列中向特定单元格添加连字符

如何在Pandas列中向特定单元格添加连字符
EN

Stack Overflow用户
提问于 2020-05-29 13:12:52
回答 1查看 984关注 0票数 3

我有一个DataFrame,它的日期没有全部正确填写。我需要清理一些日期,以便Pandas.to_datetime能够解析这些信息。

这是我的DataFrame:

代码语言:javascript
运行
复制
import pandas 
datums = {'Naam': ['Alfa', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zieta', 'Icta', 'Thieta', 
               'Jotta', 'Kappa', 'Lambda', 'Mu', 'Nu'],
   'Datum': ['2842001', '0952002', '1312003', '1112004', '1122005', '3122006', '2232007', '3112008', 
             '1212009', '9102010', '3292011', '3302012', '4412013']}

df = pandas.DataFrame(datums, columns=['Naam', 'Datum'])

与纳姆阿尔法的第一排显然是一个28042001的错误。

我能够用str.contains过滤正确的行(‘^1\24-94-9.$’)

当我尝试使用str.replace时,我无法保存现有的数据,而只在正确的位置添加连字符。

这就是我试过的:

代码语言:javascript
运行
复制
df.Datum.str.replace(r'^[1|2][4-9][4-9]....$', '\d\d-\d-\d\d\d\d', regex=True)

这将在0位置返回错误转义\d错误。

我也试过:

代码语言:javascript
运行
复制
df.Datum.str.replace(r'^[1|2][4-9][4-9]....$', '{}-{}-{}'.format(df['Datum'][:2], df['Datum'][2:3], df['Datum'][3:]), regex=True)

这会运行,但不会改变任何事情。

我试着玩代码而没有任何运气。请给我一个指针。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-29 13:15:19

你可以用

代码语言:javascript
运行
复制
df['Datum'] = df['Datum'].str.replace(r'^(\d{2})(\d)(\d+)$', r'\1-\2-\3')

^(\d{2})(\d)(\d+)$模式将匹配:

  • ^ - string
  • (\d{2})的开始-第1组(它的值可以从替换模式中引用\1替换反向引用):两个digits
  • (\d) -组2 (\2):一个digit
  • (\d+) -组3 (\3):任意0或多个digits
  • $ -直到字符串结束。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62086826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档