python - 如何合并 pandas 数据框中的 datetime.date 和 datetime.time 列?

标签 python python-3.x pandas datetime dataframe

给定 df

          Date      Time    Data     
3   2017-08-10  15:15:00    a    
0   2017-08-11  15:15:00    b    
1   2017-08-12  15:15:00    c    
2   2017-08-13  15:15:00    d    
1   2017-08-14  15:15:00    e    

print (type(df['Date'].iat[0]))
<class 'datetime.date'>

print (type(df['Time'].iat[0]))
<class 'datetime.time'>

如何将 df.Date 和 df.Time 合并到作为日期时间对象的 DateTime 列中??:

        Date        Time    Data  DateTime   
3   2017-08-10  15:15:00    a     2017-08-10 15:15:00
0   2017-08-11  15:15:00    b     2017-08-11 15:15:00
1   2017-08-12  15:15:00    c     2017-08-12 15:15:00
2   2017-08-13  15:15:00    d     2017-08-13 15:15:00
1   2017-08-14  15:15:00    e     2017-08-14 15:15:00

我尝试过的:

df['DateTime'] = df.apply(lambda r : pd.datetime.combine(r['Date'],r['Time']),1)

这按预期工作得很好,但是,我更喜欢矢量化操作,我收到以下消息:

C:\Users\User\Anaconda3\lib\site-packages\ipykernel\__main__.py:1: 
SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-
docs/stable/indexing.html#indexing-view-versus-copy
if __name__ == '__main__':

最佳答案

这里的问题是日期和时间都已经是日期时间格式。尝试

df['datetime'] = pd.to_datetime(df['Date'].dt.strftime('%Y-%m-%d') + df['Time'].astype(str), format = '%Y-%m-%d%H:%M:%S')

虽然我不知道它是否会比使用 datetime.combine 更有效率

关于python - 如何合并 pandas 数据框中的 datetime.date 和 datetime.time 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45681873/

相关文章:

python - 按组获取 Pandas 中异常值的数量

python - 如何在discord.py(rewrite)中做出 channel 删除 react ?

python - 将 pandas 数据框写入 MySQL

python - 缺少值的 DataFrame 列将不接受输入

python - 根据另一列的部分名称对 df 列中的值求和

python - 最小二乘适用于 3d 表面的 python

python - 为 Python LocustIO 格式化 Json

python-3.x - 存档中的数据库还原错误 : "There is no item named ' dump. sql'”

python - 如何像np.random.seed一样为pd.sample制作种子?

python - 使用 pandas 为具有特定条件的每一行设置列值