2014-12-13 82 views
2

我有一个熊猫数据框。将两个日期时间连接到一个字符串日期范围

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) 

因为我正在处理两列而不是两个值,所以很难仅删除日期。任何指针?

+0

数据的例子是有用的。你怎么看“找到它”?你会得到任何错误或不正确的结果?任何例子都是有用的。 – Marcin 2014-12-13 06:29:28

+0

通过“查找它很难”我的意思是在x ['datex']上的strptime不起作用,因为这些是系列而不是值,我不能将它应用于x中的“lambda x”或使用%Y% M%d而不是%s。一个例子是date1 = datetime.datetime(2014,1,1)和date2 = datetime.datetime(2014,1,3)。 – Chris 2014-12-13 06:32:46

回答

1

发现很难大道仅有的日期了,因为我有两列,而不是两个值

好工作,因为你已经在使用apply,你正在处理有两个值(不列),所以你可以调用每个date方法:

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

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

+0

油滑。不知道.date()函数,所以这可能会对我有很大的帮助。谢谢一堆! – Chris 2014-12-13 07:07:38

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 
+0

这很好,但另一个答案是更简洁一点。感谢您的帮助! – Chris 2014-12-13 07:06:53

相关问题