【发布时间】:2017-11-18 16:01:53
【问题描述】:
我有以下例子:
import pandas as pd
import numpy as np
df = pd.DataFrame([(0,2,5), (2,4,None),(7,-5,4), (1,None,None)])
def clean(series):
start = np.min(list(series.index[pd.isnull(series)]))
end = len(series)
series[start:] = series[start-1]
return series
我的目标是获得一个数据框,其中包含 None 值的每一行都用最后一个可用的数值填充。
因此,例如,仅在数据帧的第 3 行运行此函数,我将生成以下内容:
row = df.ix[3]
test = clean(row)
test
0 1.0
1 1.0
2 1.0
Name: 3, dtype: float64
我无法使用 .apply() 方法使其工作,即 df.apply(clean,axis=1)
我应该提到这是一个玩具示例 - 我将在真实示例中编写的自定义函数在填充值方面更具动态性 - 所以我不是在寻找像 .ffill 或 .fillna 这样的基本实用程序
【问题讨论】:
-
apply 没有到位,它返回一个新的 DF,你保存这个新的 df 吗?
-
@Amen 没有完成的填充行是问题
标签: python pandas numpy dataframe