首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas向前向后填充列级中的列

Pandas向前向后填充列级中的列
EN

Stack Overflow用户
提问于 2020-02-27 00:18:29
回答 2查看 532关注 0票数 3

我有以下数据帧: df

代码语言:javascript
运行
复制
                     name  width  length
timestamp                           
2019-08-01 00:00:08    10   10.0     NaN
2019-08-01 00:00:19    10    NaN     NaN
2019-08-01 00:00:56    10    NaN     86.0
2019-08-01 00:00:08    12    NaN     90
2019-08-01 00:00:19    12   12.0     NaN
2019-08-01 00:00:28    12    NaN     NaN

我想在列'name‘中的'width’和'length‘列上应用向前和向后填充。结果将如下所示:

代码语言:javascript
运行
复制
                     name  width  length
timestamp                           
2019-08-01 00:00:08    10   10.0     86
2019-08-01 00:00:19    10   10.0     86
2019-08-01 00:00:56    10   10.0     86
2019-08-01 00:00:08    12   12.0     90
2019-08-01 00:00:19    12   12.0     90
2019-08-01 00:00:28    12   12.0     90

你知道该怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-27 00:28:29

我们需要带有applygroupby,因为我们将两个函数ffillbfill链接在一起

代码语言:javascript
运行
复制
df.update(df.groupby('name').apply(lambda x : x.ffill().bfill()))
票数 3
EN

Stack Overflow用户

发布于 2020-02-27 01:30:49

正如您所说的,每个唯一的name只有一个值widthlength,您可以通过使用transformmaxfirst来避免apply

代码语言:javascript
运行
复制
df.update(df.groupby('name')[['width','length']].transform('max'))

Out[87]:
                     name  width  length
timestamp
2019-08-01 00:00:08    10   10.0    86.0
2019-08-01 00:00:19    10   10.0    86.0
2019-08-01 00:00:56    10   10.0    86.0
2019-08-01 00:00:08    12   12.0    90.0
2019-08-01 00:00:19    12   12.0    90.0
2019-08-01 00:00:28    12   12.0    90.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60418221

复制
相关文章

相似问题

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