列和过滤器Pandas的子集

Sim*_*mon 5 python pandas

使用Pandas我将如何在一个命令中过滤行并从pandas数据帧中获取一部分列.

我想尝试这样的东西....

frame[(frame.DESIGN_VALUE > 20) & (frame['mycol3','mycol6']))]
Run Code Online (Sandbox Code Playgroud)

谢谢.

EdC*_*ica 15

您可以使用布尔条件生成掩码并使用以下方法传递感兴趣的列表列表loc:

frame.loc[frame['DESIGN_VALUE'] > 20,['mycol3', 'mycol6']]
Run Code Online (Sandbox Code Playgroud)

我建议上面的内容,因为它意味着你操作视图而不是副本,其次我强烈建议使用[]选择你的列而不是通过sot .运算符作为属性,这避免了pandas行为的模糊性

例:

In [184]:
df = pd.DataFrame(columns = list('abc'), data = np.random.randn(5,3))
df

Out[184]:
          a         b         c
0 -0.628354  0.833663  0.658212
1  0.032443  1.062135 -0.335318
2 -0.450620 -0.906486  0.015565
3  0.280459 -0.375468 -1.603993
4  0.463750 -0.638107 -1.598261

In [187]:
df.loc[df['a']>0, ['b','c']]

Out[187]:
          b         c
1  1.062135 -0.335318
3 -0.375468 -1.603993
4 -0.638107 -1.598261
Run Code Online (Sandbox Code Playgroud)

这个:

frame[(frame.DESIGN_VALUE > 20) & (frame['mycol3','mycol6']))]
Run Code Online (Sandbox Code Playgroud)

不会起作用,因为你试图通过包含它来从你的df中作为条件进行子选择 &