繁体   English   中英

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

[英]Convert string to date format in python pandas dataframe

我在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

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

我想要,例如

15.08.2017, 22:46:00

或者以更方便的格式。 然后我想将实际日期与数据集中的日期进行比较。

我怎么能在pandas DataFrame中做到这一点。

谢谢你的帮助。

我认为你需要to_datetime ,但首先通过使用strradd 索引 2017年来删除前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

最后与今天日期比较使用boolean indexingdate转换pandas日期时间到python日期:

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

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

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

第一部分将稍微整理一下并获取每一行的字符串并将其转换为日期时间对象。

执行检查的第二部分将吐出一列,根据每行的系统时钟给出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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM