我有一个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)
由于我正在使用两列而不是两列值,因此很难去除日期。有什么指针吗?
答案 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