擅长:python、mysql、java
<p>以下是函数方法和泛弹性方法的混合:</p>
<pre><code>df = pd.DataFrame({'w1': [0, 1, 1, 0],
'w2': [1, 1, 0, 1],
'w3': [1, 0, 0, 0],
'w4': [0, 1, 1, 0],
'w5': [1, 1, 0, 1],
'w6': [0, 0, 1, 1],
'w7': [0, 1, 1, 0],
'w8': [1, 1, 1, 1]})
def errase_diff(row, n = 4, Diff = 3):
"""
returns array with erassed diff values after last positive value
in first n column
"""
row_length = len(row)
last_positive_id = [i for i, v in enumerate(row[:4]) if v == 1][-1]
row[last_positive_id + 1: last_positive_id + 1 + Diff] = [0 for _ in range(Diff)]
return row[:row_length]
df.apply(lambda x: errase_diff(x), 1)
w1 w2 w3 w4 w5 w6 w7 w8
0 0 1 1 0 0 0 0 1
1 1 1 0 1 0 0 0 1
2 1 0 0 1 0 0 0 1
3 0 1 0 0 0 1 0 1
</code></pre>
<p>请注意,此解决方案将删除原始数据框中的数据</p>