首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >填充几个组的缺失日期和值- Pandas

填充几个组的缺失日期和值- Pandas
EN

Stack Overflow用户
提问于 2020-05-13 22:56:31
回答 1查看 43关注 0票数 2

我有一个数据帧,看起来像这样:

代码语言:javascript
运行
复制
    province    date        D I R C
360 Incheon     2020-01-20  0 0 1 1
455 Seoul       2020-01-23  0 0 1 1
183 Gyeonggi-do 2020-01-26  0 0 1 1
184 Gyeonggi-do 2020-01-27  0 0 2 2
456 Seoul       2020-01-30  0 0 4 4

我需要的是,在第一次更新之后的每一天(在本例中为2020-01-20),我有每个省的“最后一次看到的行”,以防该日期没有更新。因此,在我的示例中,我希望作为结果df:

代码语言:javascript
运行
复制
    province    date        D I R C
1   Incheon     2020-01-20  0 0 1 1

2   Incheon     2020-01-23  0 0 1 1
3   Seoul       2020-01-23  0 0 1 1

4   Gyeonggi-do 2020-01-26  0 0 1 1
5   Incheon     2020-01-26  0 0 1 1
6   Seoul       2020-01-26  0 0 1 1

7   Gyeonggi-do 2020-01-27  0 0 2 2
8   Incheon     2020-01-27  0 0 1 1
9   Seoul       2020-01-27  0 0 1 1

10  Seoul       2020-01-30  0 0 4 4
11  Gyeonggi-do 2020-01-30  0 0 2 2
12  Incheon     2020-01-30  0 0 1 1

我尝试过可以看到的hereherehere,但它们略有不同。我的目标是使用plotly制作一个带时间的条形图,我现在可以,但对于每个省份没有任何更新的日期,即没有数据,条形图消失了,我需要它保留下来。

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 23:12:21

您可以使用set_indexreindex,使用来自unique省和日期的所有组合的MultiiIndex.from_product,然后使用groupby省和ffilldropna删除每个省第一次出现之前的日期,按日期使用sort_index (如有必要)和reset_index,如下所示:

代码语言:javascript
运行
复制
(df.set_index(['province', 'date'])
   .reindex(pd.MultiIndex.from_product([df['province'].unique(), df['date'].unique()], 
                                       names=['province', 'date']))
   .groupby(level='province').ffill()
   .dropna()
   .sort_index(level='date')
   .reset_index()
)
       province        date    D    I    R    C
0       Incheon  2020-01-20  0.0  0.0  1.0  1.0
1       Incheon  2020-01-23  0.0  0.0  1.0  1.0
2         Seoul  2020-01-23  0.0  0.0  1.0  1.0
3   Gyeonggi-do  2020-01-26  0.0  0.0  1.0  1.0
4       Incheon  2020-01-26  0.0  0.0  1.0  1.0
5         Seoul  2020-01-26  0.0  0.0  1.0  1.0
6   Gyeonggi-do  2020-01-27  0.0  0.0  2.0  2.0
7       Incheon  2020-01-27  0.0  0.0  1.0  1.0
8         Seoul  2020-01-27  0.0  0.0  1.0  1.0
9   Gyeonggi-do  2020-01-30  0.0  0.0  2.0  2.0
10      Incheon  2020-01-30  0.0  0.0  1.0  1.0
11        Seoul  2020-01-30  0.0  0.0  4.0  4.0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61777893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档