熊猫拆分混合型并获得第一个元素

时间:2016-06-05 15:41:26

标签: python-3.x pandas split datetime-format

给出以下数据框架,它来自导入凌乱的Excel电子表格:

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

我想分割存在多个日期的地方,并且只选择第一个这样的日期:

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

我希望它会将结果转换为相同的格式:

    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

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以将class Score(): level = 0 score = 0 time = 0 def __init__(self,level,score,time): Score.level = level score.score = score Score.time = time class Player(): def __init__(self, name, scores): self.name = name self.scores = scores def maxLevel(): ##Do stuff to calculate the max John = Player("John", [Score(100,1456,50), Score(210,1490,100)]) John.maxLevel() to_datetime()结合使用:

.str.split()

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]

dtypes:

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