连续删除前导 0 熊猫



假设我有一个像这样的数据帧(df(:

A       B       C       D
0  0.0000  0.0000  0.0000  0.1234
1  0.0000 -0.9760 -0.5268 -0.4261
2 -0.6277 -1.9284 -1.7718  3.4021
3  0.0000  0.0000 -0.0013  2.2955
4  0.6241 -1.9643 -0.6090  2.0827

我想从每行中删除前导的 0.0000,并将 NaN 作为新"校准"行后面的空格,如下所示:

A       B       C       D
0  0.1234  NaN     NaN     NaN   
1 -0.9760 -0.5268 -0.4261  NaN   
2 -0.6277 -1.9284 -1.7718  3.4021
3 -0.0013  2.2955  NaN     NaN   
4  0.6241 -1.9643 -0.6090  2.0827

有没有一个简单的熊猫功能来做到这一点?

让我们使用maskeqapplydropna

df.mask(df.eq(0)).apply(lambda x: pd.Series(x.dropna().values,index=x.index[:len(x.dropna())]),axis=1)

输出:

A       B       C       D
0  0.1234     NaN     NaN     NaN
1 -0.9760 -0.5268 -0.4261     NaN
2 -0.6277 -1.9284 -1.7718  3.4021
3 -0.0013  2.2955     NaN     NaN
4  0.6241 -1.9643 -0.6090  2.0827

最新更新