【发布时间】:2021-11-24 18:45:11
【问题描述】:
在我附加 4 个不同的数据框后:
list_1 = [ ]
我在 list_1 中存储了以下数据:
| date | 16/17 |
| -------- | ------|
| 2016-12-29 | 50 |
| 2016-12-30 | 52 |
| 2017-01-01 | 53 |
| 2017-01-02 | 51 |
[4 rows x 1 columns],
16/17
| date | 17/18 |
| -------- | ------|
| 2017-12-29 | 60 |
| 2017-12-31 | 62 |
| 2018-01-01 | 64 |
| 2018-01-03 | 65 |
[4 rows x 1 columns],
17/18
| date | 18/19 |
| -------- | ------|
| 2018-12-30 | 54 |
| 2018-12-31 | 53 |
| 2019-01-02 | 52 |
| 2019-01-03 | 51 |
[4 rows x 1 columns],
18/19
| date | 19/20 |
| -------- | ------|
| 2019-12-29 | 62 |
| 2019-12-30 | 63 |
| 2020-01-01 | 62 |
| 2020-01-02 | 60 |
[4 rows x 1 columns],
19/20
为了将日期格式更改为月/日,我使用以下代码:
pd.to_datetime(df['date']).dt.strftime('%m/%d')
但问题是当我想像这样按月/天排列数据时:
| date | 16/17 | 17/18 | 18/19 | 19/20 |
| -------- | ------| ------| ------| ------|
| 12/29 | 50 | 60 | NaN | 62 |
| 12/30 | 52 | NaN | 54 | 63 |
| 12/31 | NaN | 62 | 53 | NaN |
| 01/01 | 53 | 64 | NaN | 62 |
| 01/02 | 51 | NaN | 52 | 60 |
| 01/03 | NaN | 65 | 51 | NaN |
我尝试了以下方法:
df = pd.concat(list_1,axis=1)
还有:
df = pd.concat(list_1)
df.reset_index(inplace=True)
df = df.groupby(['date']).first()
还有:
df = pd.concat(list_1)
df.reset_index(inplace=True)
df = df.groupby(['date'] sort=False).first()
但仍然无法达到预期的效果。
【问题讨论】:
-
你想
pivot你的数据框吗? -
我不确定关键点,卢克。我只是想按月/日比较不同年份的数据(因此采用月/日格式),同时保留日期顺序(如示例中从 12/29 开始到 01/03 结束)。
标签: python pandas sorting time-series pandas-groupby