python - Pandas - 如何在数据框中的任何行中找到 6 个零的序列,并将其替换为 NaN?

标签 python pandas dataframe

如何找到包含 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/

相关文章:

python - 在 python 中进行字符串格式化时遇到问题

python-3.x - 带有两个 y 轴的 Seaborn 条形图

python - 设置索引,使用常见的列值作为数据框的索引

R-XGBoost : Error building DMatrix

python - %matplotlib 内联 : 'NoneType' object has no attribute 'is_interactive'

c# - 给 C# 程序员编写 Python 的建议

python - import numpy 和 import numpy as np 的区别

python - 当组列中的 NaN 时,Pandas groupby 会应用奇怪的行为

python-2.7 - python : how to keep leading zeros with dataframe. to_csv

r - 从 R 中的数据框中获取具有多个单独观察的组级观察计数