我有以下数据帧: df
                     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‘列上应用向前和向后填充。结果将如下所示:
                     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你知道该怎么做吗?
发布于 2020-02-27 00:28:29
我们需要带有apply的groupby,因为我们将两个函数ffill和bfill链接在一起
df.update(df.groupby('name').apply(lambda x : x.ffill().bfill()))发布于 2020-02-27 01:30:49
正如您所说的,每个唯一的name只有一个值width和length,您可以通过使用transform和max或first来避免apply
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.0https://stackoverflow.com/questions/60418221
复制相似问题