gpt4 book ai didi

python pandas - 如何合并一列中的日期和另一列中的时间并创建新列

转载 作者:行者123 更新时间:2023-12-01 03:10:47 24 4
gpt4 key购买 nike

我有一个来自数据库的数据框,如下所示:FltDate 和 ESTAD2 都是 datetime64[ns]

>>> print df[['Airport', 'FltDate', 'Carrier', 'ESTAD2']]

Airport FltDate Carrier ESTAD2
0 EDI 2017-06-18 BACJ 1899-12-30 05:35:00
1 EDI 2017-06-18 BA 1899-12-30 06:40:00
2 EDI 2017-06-18 BACJ 1899-12-30 07:00:00
3 EDI 2017-06-18 BA 1899-12-30 07:05:00
4 EDI 2017-06-18 BA 1899-12-30 09:00:00
5 EDI 2017-06-18 I2 1899-12-30 11:05:00
6 EDI 2017-06-18 BA 1899-12-30 11:25:00
7 EDI 2017-06-18 BA 1899-12-30 13:45:00


>>> df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 214 entries, 0 to 213
Data columns (total 12 columns):
Airport 214 non-null object
FltDate 214 non-null datetime64[ns]
<snip>
ESTAD2 214 non-null datetime64[ns]
<snip>
dtypes: datetime64[ns](4), object(8)
memory usage: 20.1+ KB

如何获取来自 FltDate 的日期部分来自 ESTAD2 的时间部分。

第 0 行的结果应如下所示

2017-06-18 05:35:00 (that is 18Jun2017 of FltDate + 05:35 of ESTAD2)

我可以用上面的结果替换 ESTAD2.. 或创建一个新列作为 FltDateTime。

尝试了各种方法都失败了...如下图...添加不成功。

>>> df.FltDate.dt.date

0 2017-06-18
1 2017-06-18
2 2017-06-18
>>> df.ESTAD2.dt.time

0 05:35:00
1 06:40:00
2 07:00:00

最佳答案

您可以使用strftimeto_datetime :

df['date'] = pd.to_datetime(df.FltDate.dt.strftime('%Y-%m-%d ') +
df.ESTAD2.dt.strftime('%H:%M:%S'))
print (df)
Airport FltDate Carrier ESTAD2 date
0 EDI 2017-06-18 BACJ 1899-12-30 05:35:00 2017-06-18 05:35:00
1 EDI 2017-06-18 BA 1899-12-30 06:40:00 2017-06-18 06:40:00
2 EDI 2017-06-18 BACJ 1899-12-30 07:00:00 2017-06-18 07:00:00
3 EDI 2017-06-18 BA 1899-12-30 07:05:00 2017-06-18 07:05:00
4 EDI 2017-06-18 BA 1899-12-30 09:00:00 2017-06-18 09:00:00
5 EDI 2017-06-18 I2 1899-12-30 11:05:00 2017-06-18 11:05:00
6 EDI 2017-06-18 BA 1899-12-30 11:25:00 2017-06-18 11:25:00
7 EDI 2017-06-18 BA 1899-12-30 13:45:00 2017-06-18 13:45:00

替代解决方案:

df['date'] = pd.to_datetime(df.FltDate.dt.strftime('%Y-%m-%d ') +
df.ESTAD2.astype(str).str.split().str[1])

print (df)
Airport FltDate Carrier ESTAD2 date
0 EDI 2017-06-18 BACJ 1899-12-30 05:35:00 2017-06-18 05:35:00
1 EDI 2017-06-18 BA 1899-12-30 06:40:00 2017-06-18 06:40:00
2 EDI 2017-06-18 BACJ 1899-12-30 07:00:00 2017-06-18 07:00:00
3 EDI 2017-06-18 BA 1899-12-30 07:05:00 2017-06-18 07:05:00
4 EDI 2017-06-18 BA 1899-12-30 09:00:00 2017-06-18 09:00:00
5 EDI 2017-06-18 I2 1899-12-30 11:05:00 2017-06-18 11:05:00
6 EDI 2017-06-18 BA 1899-12-30 11:25:00 2017-06-18 11:25:00
7 EDI 2017-06-18 BA 1899-12-30 13:45:00 2017-06-18 13:45:00

关于python pandas - 如何合并一列中的日期和另一列中的时间并创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com