Skip to main content
 首页 » 编程设计

python之Pandas之从每一行中删除前导零和尾随零

2025年05月04日15sharpest

我想在我的 df 中按行删除前面的和试验的零值,然后让它们移动到“对齐”。

下面的例子可能是最好的证明。

初始 df:

index c1 c2 c3 c4 c5 c6 c7 c8 
1      0  0  1  2  3  4  5  0 
2      0  0  0  1  2  3  4  5 
3      0  1  2  3  0  0  0  0 
4      0  0  1  2  3  4  0  0 
5      1  2  3  4  5  6  7  0 
6      0  0  0  1  0  0  4  0 

输出:

index c1 c2 c3 c4 c5 c6 c7 
1      1  2  3  4  5   
2      1  2  3  4  5 
3      1  2  3   
4      1  2  3  4   
5      1  2  3  4  5  6  7   
6      1  0  0  4  

请注意,真值的“字符串”中可能有零,因此需要在第一次/反向第一次出现时停止。这可能吗?谢谢。

请您参考如下方法:

使用 np.trim_zeros :

Trim the leading and/or trailing zeros from a 1-D array or sequence.

out = pd.DataFrame([np.trim_zeros(i) for i in df.values], index=df.index) 
out.columns = df.columns[:len(out.columns)] 
 
       c1  c2  c3   c4   c5   c6   c7 
index 
1       1   2   3  4.0  5.0  NaN  NaN 
2       1   2   3  4.0  5.0  NaN  NaN 
3       1   2   3  NaN  NaN  NaN  NaN 
4       1   2   3  4.0  NaN  NaN  NaN 
5       1   2   3  4.0  5.0  6.0  7.0 
6       1   0   0  4.0  NaN  NaN  NaN