尝试将pandas DataFrame列与datetime.date格式和datetime.time格式相结合时,我有点困惑。
DF看起来是这样的:
VJNo VJIdx lnTime lnDate
0 32613 1 05:00:00 2023-04-18
1 32613 2 05:01:00 2023-04-18
2 32613 3 05:02:30 2023-04-18
3 32613 5 05:05:30 2023-04-18
4 32613 6 05:06:30 2023-04-18
5 32613 8 05:07:30 2023-04-18
6 32613 9 05:08:30 2023-04-18
7 32613 11 05:10:30 2023-04-18
我想用
pandas.Timestamp.combine(date, time)
,但显然它不想为数据系列工作。。。(?)运行:
import pandas as pd
# Defining the data
data = {'VJNo': [32613, 32613, 32613, 32613, 32613, 32613, 32613, 32613],
'VJIdx': [1, 2, 3, 5, 6, 8, 9, 11],
'lnTime': ['05:00:00', '05:01:00', '05:02:30', '05:05:30', '05:06:30', '05:07:30', '05:08:30', '05:10:30'],
'lnDate': ['2023-04-18', '2023-04-18', '2023-04-18', '2023-04-18', '2023-04-18', '2023-04-18', '2023-04-18', '2023-04-18']}
# Create pandas dataframe
df = pd.DataFrame(data)
df['tmp'] = pd.Timestamp.combine( df['lnDate'], df['lnTime'])
返回错误:
combine() argument 1 must be datetime.date, not Series
,虽然是
datetime.date
,但一系列。。。
不幸的是,找到了其他解决方案
here
也不起作用(可能是由于熊猫的变化):
df['tmp'] = df.apply(pd.Timestamp.combine, df['lnDate'], df['lnTime'])
或
df['tmp'] = df.apply(lambda x: pd.Timestamp.combine(x['lnDate'], x['lnTime']))
我做错什么了吗?
最后的手段可能是将日期和时间转换为字符串,然后使用
pd.to_datetime
在他们身上,但是。。。我认为这不是正确的方式。