【发布时间】:2020-06-25 08:54:12
【问题描述】:
我希望对某些数据框列执行前向填充。
ffill 方法将缺失值或 NaN 替换为先前填充的值。
就我而言,我想执行前向填充,不同之处在于我不想在 Nan 上执行此操作,而是针对特定值(例如“*”)。
这是一个例子
import pandas as pd
import numpy as np
d = [{"a":1, "b":10},
{"a":2, "b":"*"},
{"a":3, "b":"*"},
{"a":4, "b":"*"},
{"a":np.nan, "b":50},
{"a":6, "b":60},
{"a":7, "b":70}]
df = pd.DataFrame(d)
df 存在
a b
0 1.0 10
1 2.0 *
2 3.0 *
3 4.0 *
4 NaN 50
5 6.0 60
6 7.0 70
预期的结果应该是
a b
0 1.0 10
1 2.0 10
2 3.0 10
3 4.0 10
4 NaN 50
5 6.0 60
6 7.0 70
如果将“*”替换为np.nan 然后ffill,这将导致将ffill 应用于列a。
由于我的数据有数百列,我想知道是否有比遍历所有列更有效的方法,检查它是否包含“*”,然后替换和填充。
【问题讨论】: