![](/img/trans.png)
[英]Concatenating Time Column Headers with Corresponding dates in rows in a DataFrame Pandas
[英]sort dataframe with dates as column headers in pandas
我的日期必須是水年,我想找到一種方法,讓列以日期 09/30/1899_24:00 開始,以日期 9/30/1999_24:00 結束。
最初我是這樣的(下圖),但是當我做 dataframe pivot 時,它弄亂了順序。
這是我的代碼的片段
sim = pd.read_csv(headout,parse_dates=True, index_col='date')
sim['Layer'] = sim.groupby('date').cumcount() + 1
sim['Layer'] = 'L' + sim['Layer'].astype(str)
sim = sim.pivot(index = None , columns = 'Layer').T
sim = sim.reset_index()
sim = sim.rename(columns={"level_0": "NodeID"})
sim["NodeID"]= sim['NodeID'].astype('int64')
sim['gse'] = sim['NodeID'].map(sta.set_index(['NodeID'])['GSE'])
24:00
不是有效時間'09/30/1899_24:00', '10/31/1899_24:00', '11/30/1898_24:00', '11/30/1899_24:00'
11/30/1899
早於11/30/1898
24:00
替換為23:59
import pandas as pd
# dataframe
df = pd.DataFrame({'date': ['09/30/1899_24:00', '09/30/1899_24:00', '09/30/1899_24:00', '09/30/1899_24:00', '10/31/1899_24:00',
'10/31/1899_24:00', '10/31/1899_24:00', '10/31/1899_24:00', '11/30/1899_24:00', '11/30/1899_24:00']})
| | date |
|---:|:-----------------|
| 0 | 09/30/1899_24:00 |
| 1 | 09/30/1899_24:00 |
| 2 | 09/30/1899_24:00 |
| 3 | 09/30/1899_24:00 |
| 4 | 10/31/1899_24:00 |
| 5 | 10/31/1899_24:00 |
| 6 | 10/31/1899_24:00 |
| 7 | 10/31/1899_24:00 |
| 8 | 11/30/1899_24:00 |
| 9 | 11/30/1899_24:00 |
# replace 24:00
df.date = df.date.str.replace('24:00', '23:59')
# formate as datetime
df.date = pd.to_datetime(df.date, format='%m/%d/%Y_%H:%M')
# final
date
0 1899-09-30 23:59:00
1 1899-09-30 23:59:00
2 1899-09-30 23:59:00
3 1899-09-30 23:59:00
4 1899-10-31 23:59:00
5 1899-10-31 23:59:00
6 1899-10-31 23:59:00
7 1899-10-31 23:59:00
8 1899-11-30 23:59:00
9 1899-11-30 23:59:00
df.date = df.date.str.replace('_24:00', '')
df.date = pd.to_datetime(df.date, format='%m/%d/%Y')
date
0 1899-09-30
1 1899-09-30
2 1899-09-30
3 1899-09-30
4 1899-10-31
5 1899-10-31
6 1899-10-31
7 1899-10-31
8 1899-11-30
9 1899-11-30
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.