使用Pandas如何在一个命令中过滤行并从pandas数据帧中获取一部分列。
我正在尝试应用这样的东西......
frame[(frame.DESIGN_VALUE > 20) & (frame['mycol3','mycol6']))]
感谢。
答案 0 :(得分:12)
您可以使用布尔条件生成蒙版并使用loc
传递感兴趣的列表列表:
frame.loc[frame['DESIGN_VALUE'] > 20,['mycol3', 'mycol6']]
我建议上面的内容,因为这意味着你操作的视图不是副本,其次我强烈建议使用[]
来选择你的列,而不是通过sot {{1 }}运算符,这可以避免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
通过使用frame[(frame.DESIGN_VALUE > 20) & (frame['mycol3','mycol6']))]
答案 1 :(得分:0)
这不起作用,因为
中有多余的')'括号frame[(frame.DESIGN_VALUE > 20) & (frame['mycol3','mycol6']))]
实际结果是:
frame[(frame.DESIGN_VALUE > 20) & (frame['mycol3','mycol6'])]