在python pandas datafram中将字符串转换为日期格式

2024-04-26 03:07:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据框中的数据集,其日期格式如下:

warnings = pd.read_csv('output.csv', sep=',')
warnung['from']

7      Di, 15. Aug, 21:52 Uhr
8      Di, 15. Aug, 22:46 Uhr
9      Di, 15. Aug, 22:46 Uhr
10     Di, 15. Aug, 21:52 Uhr
11     Di, 15. Aug, 22:46 Uhr
12     Di, 15. Aug, 21:52 Uhr
13     Di, 15. Aug, 22:46 Uhr
14     Di, 15. Aug, 21:52 Uhr
15     Di, 15. Aug, 22:46 Uhr

在这里,我的问题是,我如何在pandas中将其转换为清晰的日期格式。我想比较今天的实际日期是否与我的数据集中的此日期匹配。

我想要,例如

15.08.2017, 22:46:00

或者更方便的格式。 然后我想比较实际日期和数据集中的日期。

如何在pandas数据框中执行此操作。

谢谢你的帮助。


Tags: csv数据frompandasreadoutput格式中将
2条回答

这是我的尝试,我认为它应该有效,虽然我不确定你想用什么过程来检查它是否是当前日期。

第一部分将稍微整理一下,把每一行的字符串转换成日期时间对象。

这个检查的第二部分将弹出一个列,根据每行的系统时钟给出True/False。这是用python 3.5.2完成的。

import string
import pandas as pd
import datetime

#Converts each string into a datetime object
def convert_date(row):
    trim_date = row[4:-4]
    remove_punc = trim_date.translate(trim_date.maketrans('','',string.punctuation))
    return datetime.datetime.strptime('2017 ' + remove_punc, '%Y %d %b %H%M')

df['datetime_convert'] = df['from'].apply(convert_date)

#Creates column to check if every value matches the current time on your system
def check_is_now(row):
    if str(row) == datetime.datetime.today().strftime('%Y-%m-%d %H:%M:00')::
        return True
    else:
        return False


df['is_now'] = df['datetime_convert'].apply(check_is_now)

我认为您需要^{},但首先要在indexing with str^{}年中删除前4个和最后4个字符:

df['new'] = pd.to_datetime(df['from'].str[4:-4].radd('2017-'), format='%Y-%d. %b, %H:%M')
print (df)
                     from                 new
0  Di, 15. Aug, 21:52 Uhr 2017-08-15 21:52:00
1  Di, 15. Aug, 22:46 Uhr 2017-08-15 22:46:00
2  Di, 15. Aug, 22:46 Uhr 2017-08-15 22:46:00
3  Di, 15. Aug, 21:52 Uhr 2017-08-15 21:52:00
4  Di, 15. Aug, 22:46 Uhr 2017-08-15 22:46:00
5  Di, 15. Aug, 21:52 Uhr 2017-08-15 21:52:00
6  Di, 15. Aug, 22:46 Uhr 2017-08-15 22:46:00
7  Di, 15. Aug, 21:52 Uhr 2017-08-15 21:52:00
8  Di, 15. Aug, 22:46 Uhr 2017-08-15 22:46:00

最后一个要与今天的日期比较,请使用^{}^{}将pandas日期时间转换为python日期:

today_date = pd.datetime.today().date()

df1 = df[df['new'].dt.date == today_date]

相关问题 更多 >