PythonPandas:DataFrame筛选负值

rlcwz9us  于 2023-03-28  发布在  Python
关注(0)|答案(5)|浏览(308)

我想知道如何删除列中包含负值的所有索引。我使用Pandas DataFrames
Documentation Pandas DataFrame
格式:

我的ID-valuecol 1-valuecol 2-valuecol 3-...valuecol 30

所以我的DataFrame叫做data
我知道如何为1列做这件事:

data2 = data.index[data['valuecol1'] > 0]
data3 = data.ix[data3]

所以我只得到了valuecol1 > 0的id,我怎么才能做一些and的语句呢?
一米五米

5gfr0r5j

5gfr0r5j1#

您可以使用all检查整行或整列是否为True:

In [11]: df = pd.DataFrame(np.random.randn(10, 3))

In [12]: df
Out[12]:
          0         1         2
0 -1.003735  0.792479  0.787538
1 -2.056750 -1.508980  0.676378
2  1.355528  0.307063  0.369505
3  1.201093  0.994041 -1.169323
4 -0.305359  0.044360 -0.085346
5 -0.684149 -0.482129 -0.598155
6  1.795011  1.231198 -0.465683
7 -0.632216 -0.075575  0.812735
8 -0.479523 -1.900072 -0.966430
9 -1.441645 -1.189408  1.338681

In [13]: (df > 0).all(1)
Out[13]:
0    False
1    False
2     True
3    False
4    False
5    False
6    False
7    False
8    False
9    False
dtype: bool

In [14]: df[(df > 0).all(1)]
Out[14]:
          0         1         2
2  1.355528  0.307063  0.369505

如果只想查看列的子集,例如[0, 1]

In [15]: df[(df[[0, 1]] > 0).all(1)]
Out[15]:
          0         1         2
2  1.355528  0.307063  0.369505
3  1.201093  0.994041 -1.169323
6  1.795011  1.231198 -0.465683
ao218c7q

ao218c7q2#

您可以循环访问列名

for cols in data.columns.tolist()[1:]:
    data = data.ix[data[cols] > 0]
igetnqfo

igetnqfo3#

要在数据框中使用and语句,只需使用一个&字符,并用括号分隔每个条件。
例如:

data = data[(data['col1']>0) & (data['valuecol2']>0) & (data['valuecol3']>0)]
wbrvyc0a

wbrvyc0a4#

如果要检查相邻列组的值,例如从第二列到第十列:

df[(df.ix[:,2:10] > 0).all(1)]

也可以使用范围

df[(df.ix[:,range(1,10,3)] > 0).all(1)]

和自己的索引列表

mylist=[1,2,4,8]
df[(df.ix[:, mylist] > 0).all(1)]
lymgl2op

lymgl2op5#

import pandas as pd
df = pd.read_csv('Dataset/data.csv')
df_new = df[(df['Quantity'] < 0)]
df_new
df_new['Quantity1'] = df.Quantity
df_new.shape

相关问题