2016-06-05 16 views
1

die folgenden Datenrahmen, die sich von dem Import eine unordentliche Excel-Tabelle kamen:Pandas Split Mischtyp und erhalten erstes Element

import pandas as pd 
df=pd.DataFrame({'A':['a','b','c'], 
     'dates':['2015-08-31 00:00:00','2015-08-24 00:00:00','8/3/2015, 1/4/16']}) 

try: 
    df['dates']=df['dates'].astype('datetime64[ns]') 
except: 
    pass 
df 

    A dates 
0 a 2015-08-31 00:00:00 
1 b 2015-08-24 00:00:00 
2 c 8/3/2015, 1/4/16 

ich geteilt werden soll, wo mehr als ein Datum existiert und nehmen nur die ersten wie dies:

A dates 
0 a 2015-08-31 00:00:00 
1 b 2015-08-24 00:00:00 
2 c 8/3/2015 

ich hoffe, es wird das Ergebnis das gleiche Format wie folgt konvertieren:

A dates 
0 a 2015-08-31 00:00:00 
1 b 2015-08-24 00:00:00 
2 c 2015-08-03 00:00:00 

Vielen Dank im Voraus!

Antwort

1

können Sie to_datetime() in Verbindung mit .str.split() verwenden:

In [215]: pd.to_datetime(df.dates.str.split(',\s*').str[0]) 
Out[215]: 
0 2015-08-31 
1 2015-08-24 
2 2015-08-03 
Name: dates, dtype: datetime64[ns] 

oder

In [216]: df['dates'] = pd.to_datetime(df.dates.str.split(',\s*').str[0]) 

In [217]: df 
Out[217]: 
    A  dates 
0 a 2015-08-31 
1 b 2015-08-24 
2 c 2015-08-03 

dtypes:

In [219]: df.dtypes 
Out[219]: 
A    object 
dates datetime64[ns] 
dtype: object 
Verwandte Themen