Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-如何在数据帧的任何一行中找到6个零的序列,并将其替换为NaN?_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫-如何在数据帧的任何一行中找到6个零的序列,并将其替换为NaN?

Python 熊猫-如何在数据帧的任何一行中找到6个零的序列,并将其替换为NaN?,python,pandas,dataframe,Python,Pandas,Dataframe,如何查找包含6个零(在相邻列中)的数据帧中的每一行, 然后,为了将这6个零替换为Nan?我们可以对Numpy函数进行折磨,以获得一些聪明的方法来实现这一点。但使用Numba进行循环更简单,也可能更有效 import numpy as np import pandas as pd from numba import njit 安装程序 麻木 Numpy切片分配 np.random.seed([3, 14]) df = pd.DataFrame( np.random.randint(2

如何查找包含6个零(在相邻列中)的数据帧中的每一行,
然后,为了将这6个零替换为Nan?

我们可以对Numpy函数进行折磨,以获得一些聪明的方法来实现这一点。但使用Numba进行循环更简单,也可能更有效

import numpy as np
import pandas as pd
from numba import njit
安装程序
麻木
Numpy切片分配
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)
a = df.to_numpy()
i, j = replace_too_many_zeros(a, 6)
a[i, j] = np.nan
df.loc[:] = a