gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:36:13 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com