簡體   English   中英

如何為 Pandas 中的 2 天數據從年、日、小時和分鍾列(無月列)創建日期時間 object?

[英]How to create a datetime object from Year, Day, Hour and Minute columns (without month column) for 2 day data in Pandas?

我有表格的數據,

小時 分鍾 平均場強,nT 速度,公里/秒 AE指數,nT SYM/H, nT ASY/H, nT PCN指數
0 2017年 250 0 0 8.27 390.6 117 42 20 2.00
1個 2017年 250 0 1個 3.14 405.3 121 42 19 1.64
2個 2017年 250 0 2個 3.86 434.2 124 42 21 1.72
3個 2017年 250 0 3個 4.17 473.2 141 42 19 1.92
4個 2017年 250 0 4個 3.43 497.0 107 41 19 1.70

如何使用年、日、小時、分鍾列在 Pandas 中創建日期時間 object? 最好的方法是什么?

我嘗試使用

pd.to_datetime(dict(year=df.Year,day=df.Day,month=None))

哪個失敗了!

也嘗試過,

df["DateTime"] = pd.to_datetime(df[["Year","Day","Hour","Minute"]]).dt.strftime('%d/%y %H:%M')

您可以合並為單個字符串並使用具有自定義格式的to_datetime'%Y-%j-%H-%M'表示 Year-DayOfYear-Hours-Minutes):

pd.to_datetime(df[['Year', 'Day', 'Hour', 'Minute']]
               .astype(str).agg('-'.join, axis=1), format='%Y-%j-%H-%M')

Output:

0   2017-09-07 00:00:00
1   2017-09-07 00:01:00
2   2017-09-07 00:02:00
3   2017-09-07 00:03:00
4   2017-09-07 00:04:00
dtype: datetime64[ns]

我認為您的 Day 列是 JULIAN 日期,即當 1 月 1 日為 1 時,julian 250 是 7 月 9 日(非閏年)。 如果是這樣,您可以創建額外的列 YJ 來連接年和日,然后應用日期時間創建。

import pandas as pd
data = [{'Year':2017, 'Day':250, 'Hour':0, 'Minute':0, 'Data': 8.27},
        {'Year':2017, 'Day':250, 'Hour':1, 'Minute':0, 'Data': 3.14}]
df= pd.DataFrame(data)
df['YJ'] = (df['Year'].apply(str)+df['Day'].apply(str)) #convert to string
df['DateTime'] = (df['YJ'].apply(lambda x: dt.datetime.strptime(x,'%Y%j'))) #new column

#output: df.head()
小時 分鍾 數據 YJ 約會時間
0 2017年 250 0 0 8.27 2017250 2017-09-07
1個 2017年 250 1個 0 3.14 2017250 2017-09-07

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM