我有包含與法國月份縮寫日期的日期列大熊貓據幀,如:解析最新與法國月份縮寫
u'18-oct.-2015'
u'12-nov.-2015'
u'02-d\xe9c.-2015'
u'26-janv.-2016'
u'02-f\xe9vr.-2016'
u'31-mai-2016'
u'01-juin-2016'
什麼是使用to_datetime
解析它們的正確方法?
我有包含與法國月份縮寫日期的日期列大熊貓據幀,如:解析最新與法國月份縮寫
u'18-oct.-2015'
u'12-nov.-2015'
u'02-d\xe9c.-2015'
u'26-janv.-2016'
u'02-f\xe9vr.-2016'
u'31-mai-2016'
u'01-juin-2016'
什麼是使用to_datetime
解析它們的正確方法?
我懷疑,你可以設置你的語言環境:
import locale
locale.setlocale(locale.LC_ALL, 'fr_FR') # Windows may be a different locale name
# do your pandas read here
您可能需要告訴大熊貓是該列是datetime列......雖然它也有可能是你需要修復的列值 - jan
是janvier
的適當縮寫。但熊貓可能足夠聰明來處理它。
這似乎不起作用。更改語言環境後,Pandas無法檢測日期格式。 – sl1129
一個解決辦法是
import pandas as pd
df = pd.DataFrame({'french datetime':[u'18-oct.-2015',u'12-nov.-2015',u'02-d\xe9c.-2015',u'26-janv.-2016',u'02-f\xe9vr.-2016',u'31-mai-2016',u'01-juin-2016']})
# make a dictionary that maps the month name in french to a number
frenc_to_eng = {u'oct.': u'10', u'nov.':u'11',u'janv.':u'1',u'd\xe9c.':u'12',u'f\xe9vr.':u'2',u'mai':u'5',u'juin':u'6'}
# make new columsn for day month and year. FOr month, map the french name to month numbers
df['day'] = df['french datetime'].apply(lambda x : x.split('-')[0])
df['month'] = df['french datetime'].apply(lambda x : x.split('-')[1]).map(frenc_to_eng)
df['year'] = df['french datetime'].apply(lambda x : x.split('-')[2])
# make date time column from year, month and day.
df['date'] = pd.to_datetime(df['year']+'-'+df['month']+'-'+df['day'],format='%Y-%m-%d', errors='ignore')
print df
結果
french datetime day month year date
0 18-oct.-2015 18 10 2015 2015-10-18
1 12-nov.-2015 12 11 2015 2015-11-12
2 02-déc.-2015 02 12 2015 2015-12-02
3 26-janv.-2016 26 1 2016 2016-01-26
4 02-févr.-2016 02 2 2016 2016-02-02
5 31-mai-2016 31 5 2016 2016-05-31
6 01-juin-2016 01 6 2016 2016-06-01
如果你能負擔得起使用一個外部庫,然後 - 'DF [ '日期']申請(拉姆達X:dateparser。 parse(x))'會將日期字符串轉換爲正確的'datetime64'格式。 (*'pip install dateparser' *如果你沒有安裝它) –