我使用以下代码在日期时间对象的pandas数据框中创建一个新的时间变量:
data['Date'] = pd.to_datetime(data['Date'])
data['Year'] = data['Date'].apply(lambda x: x.year)
data['Month'] = data['Date'].apply(lambda x: x.month)
data['Day'] = data['Date'].apply(lambda x: x.day)
data['time'] = data['Month'].map(str) + '/' + data['Day'].map(str)
+'/'+ data['Year'].map(str)
data = data.drop(["Date", 'Year','Month',"Day"], axis=1)
产生以下'时间'柱:
0 2/4/2016
1 8/16/2016
2 9/28/2016
3 9/29/2016
4 10/5/2016
我希望输出是这样的:
0 2/4/16
1 8/16/16
2 9/28/16
3 9/29/16
4 10/5/16
答案 0 :(得分:3)
将日期访问者与strftime
:pd.Series.dt.strftime
一起使用
有关您可以使用的代码,请参阅http://strftime.org/。
考虑数据框df
df = pd.DataFrame(dict(Date=pd.date_range('2017-01-01', periods=5)))
df
Date
0 2017-01-01
1 2017-01-02
2 2017-01-03
3 2017-01-04
4 2017-01-05
然后
df['time'] = df.Date.dt.strftime('%-m/%-d/%y')
df
Date time
0 2017-01-01 1/1/17
1 2017-01-02 1/2/17
2 2017-01-03 1/3/17
3 2017-01-04 1/4/17
4 2017-01-05 1/5/17
答案 1 :(得分:1)
您可以通过更改作用于年度列的lambda函数来执行此操作。
data['Date'] = pd.to_datetime(data['Date'])
data['Year'] = data['Date'].apply(lambda x: str(x.year)[-2:]) #Last two characters of year
data['Month'] = data['Date'].apply(lambda x: x.month)
data['Day'] = data['Date'].apply(lambda x: x.day)
data['time'] = data['Month'].map(str) + '/' + data['Day'].map(str) +'/'+ data['Year'].map(str)[2:]
data = data.drop(["Date", 'Year','Month',"Day"], axis=1)