我想在我的 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
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
请注意,真值的“字符串”中可能有零,因此需要在第一次/反向第一次出现时停止。这可能吗?谢谢。
从一维数组或序列中修剪前导和/或尾随零。
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
Run Code Online (Sandbox Code Playgroud)