gpt4 book ai didi

Python数据框在多列中删除负值

转载 作者:行者123 更新时间:2023-12-02 01:30:51 25 4
gpt4 key购买 nike

我想在数据帧的某些列中删除负值。我的代码:

ad = pd.DataFrame({'A':[-1,2,3,4],'B':[5,-6,7,8],'C':[1,-2,0,1]})

A B C
0 -1 5 1
1 2 -6 -2
2 3 7 0
3 4 8 -1

我想删除 A 列和 B 列中的负值行

预期结果:

ad = 
A B C
1 3 7 0
2 4 8 -1

目前的解决方案:

ad = ad[ad[['A','B']]>0]
A B C
0 NaN 5.0 NaN
1 2.0 NaN NaN
2 3.0 7.0 NaN
3 4.0 8.0 NaN

ad.dropna(how='any',inplace=True)
ad = []

更新:我尝试了下面接受的答案。另外,我想出了一个基于 numpy 的解决方案。

import pandas as pd
import numpy as np
ad = pd.DataFrame({'A':[-1,2,3,4],'B':[5,-6,7,8],'C':[1,-2,0,1]})
print(ad[np.logical_and.reduce(ad[['A','B']]>0,axis=1)])
%timeit ad[np.logical_and.reduce(ad[['A','B']]>0,axis=1)]
A B C
2 3 7 0
3 4 8 1
1000 loops, best of 5: 795 µs per loop

print(ad[(ad[['A','B']] > 0).all(1)])
%timeit ad[(ad[['A','B']] > 0).all(1)]

A B C
2 3 7 0
3 4 8 1
1000 loops, best of 5: 979 µs per loop

最佳答案

all您可以检查行或列中的所有元素是否为真。您可以在列子集的过滤器中使用它:

import pandas as pd
ad = pd.DataFrame({'A':[-1,2,3,4],'B':[5,-6,7,8],'C':[1,-2,0,-1]})
ad[(ad[['A','B']] > 0).all(1)]

输出:

<表类=“s-表”><标题>ABC <正文>2370348-1

关于Python数据框在多列中删除负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73349437/

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