2017-08-16 72 views
1

我有一個數據集以下日期格式的熊貓數據幀:字符串轉換爲在python大熊貓數據幀的日期格式

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 

或以更方便的格式。 然後我想比較實際日期和我的數據集中的日期。

我該如何在熊貓數據框中做到這一點。

感謝您的任何幫助。

回答

0

我想你需要to_datetime,而是首先由indexing with strradd2017年去除頭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的轉換大熊貓日期時間到蟒蛇日期:

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

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

「today_date」非常優雅,謝謝。 –

+0

解決方案不起作用? – jezrael

+0

是的,它的確如此,但我仍然必須弄清楚如何在today_date匹配的情況下如何從列「E-Mail」中接收電子郵件併發送該列上所有電子郵件的消息。我會爲此寫一個新問題,如果您有想法,我可以在此發佈鏈接 –

0

這是我的嘗試,我認爲它應該工作,雖然我不確定你想用來檢查它是否是當前日期的過程。

第一部分將略微整理一些內容,並將每行的字符串轉換爲日期時間對象。

這樣做的第二部分檢查將吐出一列,根據每行的系統時鐘提供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) 
+0

感謝您的回答,第一部分將做的工作。第二部分涉及再次從另一列中提取電子郵件以便向該電子郵件發送消息。我認爲我的主要問題是我不知道鋤頭循環熊貓數據框。我可以爲此寫一個新問題 –