我希望对df
中的每一行进行左移位,就像对角线移位一样。
我有这样的想法:
a1 a2 a3 a4
row1 1 5 5 3
row2 0 4 1 4
row3 0 0 7 6
row4 0 0 0 2
并希望它像:
a1 a2 a3 a4
row1 1 5 5 3
row2 4 1 4 0
row3 7 6 0 0
row4 2 0 0 0
我的想法是对每一行使用.shift()方法,具体取决于数字。但是有没有更好的方法来解决这个问题呢
我的解决办法是:
for i in range(0, len(df)):
df.iloc[i] = df.iloc[i].shift(periods=-i, fill_value = 0)
使用^{} 翻转零值位置的numpy方法:
df
:类似的方法除了将所有0移动到末尾,而不仅仅是翻转:
修改的
df
:翻转方法:
排序方法:
翻转方法的细分:
mask
保存非零值的位置:flipped
将0翻转到另一侧以保持掩码:来自
df
的非零值将根据翻转的:然后旧值需要用零覆盖:
排序方法类似,但不是翻转
mask
而是进行排序:df
:mask
:sorted_mask
:IIUC,这里有一个方法:
相关问题 更多 >
编程相关推荐