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

时间:2017-02-06 08:11:02

标签: python pandas datetime timedelta

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

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

无论如何,我可以按照我想要的方式获取价值吗?

2 个答案:

答案 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