根据没有名称值的列过滤数据框

时间:2019-01-15 12:23:54

标签: python python-3.x pandas dataframe filtering

我有一个数据框,如果每行两列的值大于两个特定数字,则需要过滤该数据框。另外,重要的是我什么都不知道数据框,除了那些列是数字-2和-3

例如,我们有dataframe = pd.DataFrame(data=[[1,2,3,4],[5,6,7,8],[1,2,-3,4],[5,-6,7,8]])。想象一下,如果-2和-3列大于0,则需要对其进行过滤。在这种情况下,我们将仅返回前两行。

我已经使用return dataframe[(dataframe[:, -3] >= 0) and (dataframe[:, -2] >= 0)]进行了尝试,但是它给了我以下错误:TypeError: unhashable type: 'slice'

2 个答案:

答案 0 :(得分:1)

使用iloc用于按位置选择列,使用botwise and使用&

df = dataframe[(dataframe.iloc[:, -3] >= 0) & (dataframe.iloc[:, -2] >= 0)]
print (df)
   0  1  2  3
0  1  2  3  4
1  5  6  7  8

答案 1 :(得分:1)

您可以这样做:

.qry

输出

import pandas as pd

dataframe = pd.DataFrame(data=[[1,2,3,4],
                               [5,6,7,8],
                               [1,2,-3,4],
                               [5,-6,7,8]])

mask = (dataframe.iloc[:, [-3, 2]] >= 0).all(axis=1)

result = dataframe[mask]
print(result)