如何通过加入 pandas 中的现有列来创建新列

how to make a new column by joining to existing column in pandas

我知道这个问题有很多类似的类型,但我无法通过现有答案找到解决方法。这是一个简单的问题,但我仍然坚持这个小问题。我有一个包含很多列的数据。我想使用两个现有列创建一个新列。像这样:

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))

有没有办法让我以我想要的方式获取值,而不是在元组中?

您需要 sum 转换列 Date to_datetime and column 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

假设列是字符串,将它们相加并使用 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