将两个日期时间连接到字符串日期范围

时间:2014-12-13 05:48:16

标签: python string datetime pandas concat

我有一个pandas数据帧。

Data = pd.DataFrame([[datetime.datetime(2014,1,1),datetime.datetime(2014,1,3)]],columns=['date1','date2')

该数据框有两个日期时间列date1和date2。

我想创建一个包含以下格式的字符串的新列:

'1/1/2014 - 1/3/2014'

现在我有了这个设置来创建新列但它保留了尾随hms

Data['range'] = Data.apply(lambda x:'%s - %s' % (x['date1'],x['date2']),axis=1)

由于我正在使用两列而不是两列值,因此很难去除日期。有什么指针吗?

2 个答案:

答案 0 :(得分:1)

  
    

由于我正在使用两列而不是两个值

,因此很难去除日期   

好吧,既然您已经在使用apply,那么您正在处理两个值(而不是列),因此您可以在每个值上调用date方法:

Data.apply(
    lambda x: '%s - %s' % ( xdate1.date() , x.date2.date() ),
    axis=1)

传递给lambda函数的x是您的数据框的一行,因此访问x.date1(或x['date1'])会得到一个Timestamp类型的值。从中提取日期很容易。

答案 1 :(得分:1)

我认为这应该有所帮助:

import pandas as pd
from datetime import datetime

Data = pd.DataFrame([[datetime(2014,1,1),
                      datetime(2014,1,3)]],
                      columns=['date1','date2'])

# 
Data['range'] = Data.apply(lambda x:'%s - %s' %
                             (x['date1'].to_pydatetime().strftime("%d/%m/%Y"),
                              x['date2'].to_pydatetime().strftime("%d/%m/%y")),
                             axis=1)       

print(Data)      

结果是:

       date1      date2
0 2014-01-01 2014-01-03
       date1      date2                  range
0 2014-01-01 2014-01-03  01/01/2014 - 03/01/14