首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果列中的时间戳不全是时间戳,我如何用字符串替换数据帧中的时间戳?

如果列中的时间戳不全是时间戳,我如何用字符串替换数据帧中的时间戳?
EN

Stack Overflow用户
提问于 2021-04-21 03:53:35
回答 2查看 108关注 0票数 1

我正在尝试使用无法编辑的excel电子表格来构建机器学习模型。.xls中的一些列存在格式问题,因此一些数据显示为日期时间戳,而不是str或int。以下是pd数据帧中的一个示例:

代码语言:javascript
运行
复制
0     40-49   premeno      15-19                  0-2       yes          3   
1     50-59      ge40      15-19                  0-2        no          1   
2     50-59      ge40      35-39                  0-2        no          2   
3     40-49   premeno      35-39                  0-2       yes          3   
4     40-49   premeno      30-34  **2019-05-03 00:00:00**       yes          2

在第4行中,值3-5意外地被格式化为日期(在xls中显示为03 May ),因此在数据帧中被指定为日期时间戳。我尝试了许多用3-5替换2019-05-03 00:00:00的方法,包括:

代码语言:javascript
运行
复制
df['column'] = df['column'].replace([('2019-05-03 00:00:00')], '3-5') 

和使用Timestamp.replace,但似乎都不起作用。对于如何用正确的数据替换这个格式错误的数据点有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2021-04-21 08:08:44

可能有一种更简单的方法,但您可能需要应用具有正向查找的re.search

代码语言:javascript
运行
复制
import re

pat1 = '(?<=\*{2}\d{4}-0\d-0)(\d)(?= 00:00:00\*\*)'

pat2 = '(?<=\*{2}\d{4}-0)(\d)(?=-0\d 00:00:00\*\*)'

df['column'] = df['column'].astype(str).apply(
        lambda x: (re.search(pat2, '**2019-05-03 00:00:00**').group()
                   +'-'+re.search(pat1, '**2019-05-03 00:00:00**').group())
                   if '**' in x else x
     )
票数 0
EN

Stack Overflow用户

发布于 2021-04-21 14:26:36

您可以使用apply迭代该列,并检查该元素是否为pd.Timestamp的实例;如果是,则提取字符串"day-month",否则保持原样。

例如:

代码语言:javascript
运行
复制
import pandas as pd

# what you have is something like (mixed datatype column/Series)
df = pd.DataFrame({'label': ['0-2', '1-3', pd.Timestamp('2019-05-03')]})

# iterate the column with an apply, extract day-month string if pd.Timestamp
df['label1'] = df['label'].apply(lambda x: f"{x.day}-{x.month}" if isinstance(x, pd.Timestamp) else x)

# ... to get
df['label1'] 
0    0-2
1    1-3
2    3-5
Name: label1, dtype: object

另请参阅:Python pandas: how to obtain the datatypes of objects in a mixed-datatype column?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67185498

复制
相关文章

相似问题

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