python根据第0行的值范围选择列

时间:2017-01-08 17:53:47

标签: python pandas dataframe boolean range

从Pandas DataFrame中,我想选择第一行的值介于某个范围(例如,0.5 - 1.1)之间的列

我可以选择行0大于或小于某个数字的列:

df = pd.DataFrame(example).T

Result = df[df.iloc[:, 0] > 0.5].T 

如何在一个范围内(即大于0.5且小于1)执行此操作。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用between

print (df[df.iloc[:, 0].between(0.5, 1.1)])

具有&array and)条件的另一种解决方案:

print (df[(df.iloc[:, 0] > 0.5) & (df.iloc[:, 0] < 1.1)])

样品:

df = pd.DataFrame({'a':[1.1,1.4,0.7,0,0.5]})
print (df)
     a
0  1.1
1  1.4
2  0.7
3  0.0
4  0.5

#inclusive True is by default
print (df[df.iloc[:, 0].between(0.5, 1.1)])
     a
0  1.1
2  0.7
4  0.5

#added inclusive False
print (df[df.iloc[:, 0].between(0.5, 1.1, inclusive=False)])
     a
2  0.7

print (df[(df.iloc[:, 0] > 0.5) & (df.iloc[:, 0] < 1.1)])
     a
2  0.7

但如果需要按第一行选择列添加loc

df = pd.DataFrame({'A':[1.1,2,3],
                   'B':[.4,5,6],
                   'C':[.7,8,9],
                   'D':[1.0,3,5],
                   'E':[.5,3,6],
                   'F':[.7,4,3]})

print (df)
     A    B    C    D    E    F
0  1.1  0.4  0.7  1.0  0.5  0.7
1  2.0  5.0  8.0  3.0  3.0  4.0
2  3.0  6.0  9.0  5.0  6.0  3.0

print (df.loc[:, df.iloc[0, :].between(0.5, 1.1)])
     A    C    D    E    F
0  1.1  0.7  1.0  0.5  0.7
1  2.0  8.0  3.0  3.0  4.0
2  3.0  9.0  5.0  6.0  3.0

print (df.loc[:, df.iloc[0, :].between(0.5, 1.1, inclusive=False)])
     C    D    F
0  0.7  1.0  0.7
1  8.0  3.0  4.0
2  9.0  5.0  3.0

print (df.loc[:, (df.iloc[0, :] > 0.5) & (df.iloc[0, :] < 1.1)])
     C    D    F
0  0.7  1.0  0.7
1  8.0  3.0  4.0
2  9.0  5.0  3.0