gpt4 book ai didi

python-3.x - 如果列的值为零,则该行上的其他列值为零

转载 作者:行者123 更新时间:2023-12-04 08:50:21 25 4
gpt4 key购买 nike

这是我的输入
DF

    A    B    C    D
0 0 5 7 9
1 6 7 2 8
2 2 8 6 3
3 0 9 6 7
在上面 DataFrame , 如果值 Df['A'] 为零,则其他列值为零
我期待的输出
df
    A    B    C    D
0 0 0 0 0
1 6 7 2 8
2 2 8 6 3
3 0 0 0 0
我的 Df 是 [8760 行 x 2 列],我必须对 122 个文件执行此操作。
请建议我在最短的时间内运行此操作的解决方案

最佳答案

您可以对集合使用索引 0通过面具:

df[df['A'] == 0] = 0
print (df)
A B C D
0 0 0 0 0
1 6 7 2 8
2 2 8 6 3
3 0 0 0 0
替代方法是使用 DataFrame.mask :
df = df.mask(df['A'] == 0, 0)
如果性能很重要,请使用 DataFrame构造函数和 numpy.where :
df = pd.DataFrame(np.where(df['A'].to_numpy()[:, None] == 0, 0, df), 
index=df.index,
columns=df.columns)
print (df)
A B C D
0 0 0 0 0
1 6 7 2 8
2 2 8 6 3
3 0 0 0 0
10k 行、4 列、50% 匹配数据的样本数据性能:
#10k rows
df = pd.concat([df] * 2500, ignore_index=True)


In [101]: %timeit df[df['A'] == 0] = 0
465 µs ± 40.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [103]: %timeit df.mask(df['A'] == 0, 0)
2.56 ms ± 419 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)


In [105]: %timeit pd.DataFrame(np.where(df['A'].to_numpy()[:, None] == 0, 0, df), index=df.index, columns=df.columns)
123 µs ± 666 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

关于python-3.x - 如果列的值为零,则该行上的其他列值为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64134423/

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