我知道这个问题有很多相似的类型,但我无法通过现有的答案找到答案。这是一个简单的问题,但我仍然坚持这个小问题。我有一个包含大量列的数据。我想使用两个现有列创建一个新列。像这样:
Index Date Time
0 26-10-2017 06:00:00
1 26-10-2017 06:15:00
2 26-10-2017 06:30:00
现在我需要一个新列,它应该是这样的:
Index Date Time Datetime
0 26-10-2017 06:00:00 26-10-2017 06:00:00
1 26-10-2017 06:15:00 26-10-2017 06:15:00
2 26-10-2017 06:30:00 26-10-2017 06:30:00
我现在无法做到这一点。我目前正在获得一个包含两个字符串值的元组,但我不想要这个:
Index Date Time Datetime
0 26-10-2017 06:00:00 ('26-10-2017', '06:00:00')
1 26-10-2017 06:15:00 ('26-10-2017', '06:15:00')
2 26-10-2017 06:30:00 ('26-10-2017', '06:30:00')
我使用以下代码:
df5['Datetime'] = list(zip(df5.Date, df5.Time))
无论如何,我可以按照我想要的方式获取价值吗?
答案 0 :(得分:1)
您需要sum
已转换的列Date
to_datetime
和列Time
to_timedelta
:
df.Date = pd.to_datetime(df.Date)
df.Time = pd.to_timedelta(df.Time)
df['Datetime'] = df.Date + df.Time
print (df)
Date Time Datetime
Index
0 2017-10-26 06:00:00 2017-10-26 06:00:00
1 2017-10-26 06:15:00 2017-10-26 06:15:00
2 2017-10-26 06:30:00 2017-10-26 06:30:00
print (df.dtypes)
Date datetime64[ns]
Time timedelta64[ns]
Datetime datetime64[ns]
dtype: object
答案 1 :(得分:1)
假设列是字符串,请将它们相加并使用pd.to_datetime
df.assign(DateTime=pd.to_datetime(df.Date + ' ' + df.Time))
Index Date Time DateTime
0 0 26-10-2017 06:00:00 2017-10-26 06:00:00
1 1 26-10-2017 06:15:00 2017-10-26 06:15:00
2 2 26-10-2017 06:30:00 2017-10-26 06:30:00