我有一個帶有這種日期的資料框
| 年 | 日 | 小時 | 分鐘 |
|---|---|---|---|
| 2017 | 244 | 0 | 0 |
| 2017 | 244 | 0 | 1 |
| 2017 | 244 | 0 | 2 |
我想在此 DataFrame 上創建一個新列,顯示日期 小時分鐘,但我不知道如何將日期轉換為月份并統一所有內容
我嘗試使用 pd.to_datetime ,如下面的代碼。
line['datetime'] = pd.to_datetime(line['Year'] line['Day'] line['Hour'] line['Minute'], format= '%Y%m%d %H%M')
我想要這樣的東西:
| 年 | 月 | 日 | 小時 | 分鐘 |
|---|---|---|---|---|
| 2017 | 9 | 1 | 0 | 0 |
| 2017 | 9 | 1 | 0 | 1 |
| 2017 | 9 | 1 | 0 | 2 |
uj5u.com熱心網友回復:
嘗試:
s = pd.to_datetime(df['Year'], format='%Y') \
pd.TimedeltaIndex(df['Day']-1, unit='D')
print(s)
# Output
0 2017-09-01
1 2017-09-01
2 2017-09-01
dtype: datetime64[ns]
現在您可以插入列:
df.insert(1, 'Month', s.dt.month)
df['Day'] = s.dt.day
print(df)
# Output
Year Month Day Hour Minute
0 2017 9 1 0 0
1 2017 9 1 0 1
2 2017 9 1 0 2
uj5u.com熱心網友回復:
所以在你的情況下
df['date'] = pd.to_datetime(df.astype(str).agg(' '.join,1),format='%Y %j %H %M')
Out[294]:
0 2017-09-01 00:00:00
1 2017-09-01 00:01:00
2 2017-09-01 00:02:00
dtype: datetime64[ns]
#df['month'] = df['date'].dt.month
#df['day'] = df['date'].dt.day
uj5u.com熱心網友回復:
df["Month"]=round(df["Day"]/30 .5).astype(int)
這將建立一個新列并通過使用天列來計算月份(總天數 / 30)填充 taht 列,通過添加 0.5 進行四舍五入并將其作為整數插入使用 astype
示例截圖

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420060.html
標籤:
上一篇:設定knitr檔案的日期格式
