我想用前N一行值的平均值填充缺失值,示例如下所示:
N=2
df = pd.DataFrame([[np.nan, 2, np.nan, 0],
[3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5],
[np.nan, 3, np.nan, np.nan]],
columns=list('ABCD'))
Run Code Online (Sandbox Code Playgroud)
DataFrame如下:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
3 NaN 3.0 NaN NaN
Run Code Online (Sandbox Code Playgroud)
结果应该是:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN (4+2)/2 NaN 5
3 NaN 3.0 NaN (1+5)/2
Run Code Online (Sandbox Code Playgroud)
我想知道是否有优雅和快速的方法来实现这个没有循环.
如何使用loc或在pd.DataFrame中选择反索引iloc?
我尝试了df.loc[!my_index,my_feature]但是失败了。
而且df.loc[[ind for ind in df.index.tolist() if ind not in my_index],my_feature]看起来太呆板了。有更好的主意吗?
在这里,我有很多不同长度的列表,比如a=[1,2,3]和b=[2,3]
我想从它们生成一个pd.DataFrame,通过nan在列表末尾填充,如下所示:
a b
1 1 2
2 2 3
3 3 nan
Run Code Online (Sandbox Code Playgroud)
有什么好主意可以帮我这么做吗?
参考lightgbm.cv,有两个参数让我困惑:metrics和feval。基于我对 gbdt 的一点了解,评估指标和评估函数都是从预测向量和真实标签向量计算损失,例如 auc。
然而,metrics和function听起来像他们正在处理不同的任务。
lightgbm.cv(params,metrics='auc', feval='ks'),将feval='ks'覆盖metrics='auc'?在集群模式下,如何编写一个闭包函数f让每个 worker 访问变量的副本N。
N=5
lines=sc.parallelize(['early radical', 'french revolution','pejorative way', 'violent means'])
def f1(line):
return line[:N]
l=lines.map(f1)
l.collect()
Run Code Online (Sandbox Code Playgroud)
我正在尝试尝试以找出我的理解是否正确。在我的示例中,f1在本地模式下工作。
我没有任何集群,我真的很想知道它是否可以在集群模式下工作?换句话说,worker 可以访问 variable N,它在外部定义f1但f1在驱动程序节点内部使用。
python ×4
pandas ×3
dataframe ×2
apache-spark ×1
indexing ×1
lightgbm ×1
pyspark ×1
python-3.x ×1