Python 将两个日期时间连接到字符串日期范围中
我有一个熊猫数据框Python 将两个日期时间连接到字符串日期范围中,python,string,datetime,pandas,concat,Python,String,Datetime,Pandas,Concat,我有一个熊猫数据框 Data = pd.DataFrame([[datetime.datetime(2014,1,1),datetime.datetime(2014,1,3)]],columns=['date1','date2') 该数据帧有两个datetime列date1和date2 我想创建一个包含以下格式字符串的新列: '1/1/2014 - 1/3/2014' 现在我有了创建新列的设置,但它保留了后面的hms: Data['range'] = Data.apply(lambda x:
Data = pd.DataFrame([[datetime.datetime(2014,1,1),datetime.datetime(2014,1,3)]],columns=['date1','date2')
该数据帧有两个datetime列date1和date2
我想创建一个包含以下格式字符串的新列:
'1/1/2014 - 1/3/2014'
现在我有了创建新列的设置,但它保留了后面的hms:
Data['range'] = Data.apply(lambda x:'%s - %s' % (x['date1'],x['date2']),axis=1)
因为我使用的是两列而不是两个值,所以很难只去掉日期。有什么建议吗
因为我使用的是两列而不是两个值,所以很难只去掉日期
因为您已经在使用apply
,所以要处理两个值(不是列),所以可以对每个值调用date
方法:
Data.apply(
lambda x: '%s - %s' % ( xdate1.date() , x.date2.date() ),
axis=1)
传递给lambda函数的
x
是数据帧的一行,因此访问x.date1
(或x['date1']
)会给出一个时间戳类型的值。从中提取日期很容易。我认为这应该有帮助:
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
您的数据示例将非常有用。你觉得“很难”是什么意思?您得到任何错误或不正确的结果吗?任何示例都会很有用。所谓“发现困难”,我的意思是x['datex']上的strTime不起作用,因为它们是系列而不是值,我无法将其应用于“lambda x”中的x,或者使用%Y%M%d而不是%s。例如date1=datetime.datetime(2014,1,1)和date2=datetime.datetime(2014,1,3)。这很好,但另一个答案更简洁。谢谢你的帮助!滑溜的我还不知道.date()函数,所以这可能会对我今后的工作有很大帮助。非常感谢!