如何从pandas数据帧中获取选择列和行

时间:2018-03-06 22:28:51

标签: python-3.x pandas dataframe

我正在使用pandas数据帧,我想对某些列进行过滤,然后只提取满足给定约束的那些行。

以下是我的数据框:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8),
                   'D' : np.random.randn(8)})

df

     A      B         C         D
0  foo    one -0.575010 -0.271119
1  bar    one -0.130209 -0.106217
2  foo    two  0.093987 -1.351369
3  bar  three -0.403304  0.983619
4  foo    two  0.668989  0.249099
5  bar    two  1.153876  1.407159
6  foo    one  1.453793 -0.347721
7  foo  three  0.493562 -0.051688

我想得到B和D列,然后在循环中应用过滤器,以便将我切成的选择性列切换为for col in df.loc[:, ["B", "D"]],产生以下输出:

      B             D
0    one       -0.271119
1    one       -0.106217
2    two       -1.351369
3    three      0.983619
4    two        0.249099
5    two        1.407159
6    one       -0.347721
7    three     -0.051688

但在此之后,我无法在if语句中应用选择性过滤来获取这些行。因此,最终输出只得到B和D中的行,它们不等于“B”列的“一”值

      B             D
2    two       -1.351369
3    three      0.983619
4    two        0.249099
5    two        1.407159
7    three     -0.051688

2 个答案:

答案 0 :(得分:3)

选择列后使用query

df[['B', 'D']].query('B != "one"')

       B         D
2    two  0.611362
3  three  0.400219
4    two -0.959443
5    two  1.494226
7  three -1.471558

答案 1 :(得分:3)

def update_coords(): global playerX, playerY playerX = tank.xcor() playerY = tank.ycor() playerHeading = tank.heading()

的基本用法
.loc