我有一个数据框,如果每行两列的值大于两个特定数字,则需要过滤该数据框。另外,重要的是我什么都不知道数据框,除了那些列是数字-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'
。
答案 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)