如何找到包含 6 个零(在相邻列中)的数据框中的每一行, 然后把这6个零换成Nan?
最佳答案
我们可以折磨 Numpy 函数来获得一些聪明的方法来做到这一点。但是使用 Numba 进行循环更简单并且可能更有效。
import numpy as np
import pandas as pd
from numba import njit
设置
np.random.seed([3, 14])
df = pd.DataFrame(
np.random.randint(2, size=(100_000, 20)),
columns=[*'ABCDEFGHIJKLMNOPQRST']
)
数巴
@njit
def replace_too_many_zeros(a, k):
i = [0][:0]
j = [0][:0]
for i_, row in enumerate(a):
count_zeros = 0
for j_, col in enumerate(row):
if col == 0:
count_zeros += 1
else:
if count_zeros >= k:
j += list(range(j_ - count_zeros, j_))
i += [i_] * count_zeros
count_zeros = 0
return np.array(i), np.array(j)
Numpy 切片赋值
a = df.to_numpy()
i, j = replace_too_many_zeros(a, 6)
a[i, j] = np.nan
df.loc[:] = a
关于python - Pandas - 如何在数据框中的任何行中找到 6 个零的序列,并将其替换为 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66845050/