[英]How to create a Pandas column for datetime from year / month/ day / hour / minute / second?
[英]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.