如何按索引值和任何列中的值搜索 pandas 数据框 [英] How to search pandas data frame by index value and value in any column

查看:66
本文介绍了如何按索引值和任何列中的值搜索 pandas 数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试选择数据,从文件中读取,由值 1 和 0 表示.我希望能够从值列表中选择行,同时选择每个选定行的值为 1 的任何列.为了使它更复杂,我还想从值列表中选择行,其中这些行的列中的所有值都为零.这可能吗?最终,如果除 Pandas 数据框之外的另一种方法效果更好,我愿意尝试.

I am trying to select data, read in from a file, represented by the values one and zero. I want to be able to select rows from a list of values and at the same time select for any column in which each of the selected rows has a value of one. To make it more complex I also want to select rows from a list of values where all values in a column for these rows is zero. Is this possible? Ultimately if another method besides pandas data frame would work better I would be willing to try that.

需要明确的是,可以选择任何列,我不知道提前选择哪些列.

To be clear, any column may be selected and I do not know which ones ahead of time.

谢谢!

推荐答案

你可以使用 all() any() ix[]运营商.查看官方文档,或此主题 了解更多详情

You can use all() any() ix[] operators. Check the official documentation, or this thread for more details

import pandas as pd
import random
import numpy as np


#created a dump data as you didn't provide one
df = pd.DataFrame({'col1':  [random.getrandbits(1) for i in range(10)], 'col2':  [random.getrandbits(1) for i in range(10)], 'col3': [1]*10})

#You can select the value directly by using ix[] operator
row_indexer,column_indexer=3,1
print df.ix[row_indexer,column_indexer]

#You can filter the data of a specific column this way
print df[df['col1']==1]
print df[df['col2']==1]

#df.iloc to select by postion .loc to  Selection by Label

#want to be able to select rows from a list of values and at the same time select for any column in which each of the selected rows has a value of one.
print df[(df.T == 1).any()]
# if you wanna filter a specific columns with a condition on rows
print df[(df['col1']==1)|(df['col2']==1)]
#To make it more complex I also want to select rows from a list of values where all values in a column for these rows is zero.
print df[(df.T == 0).all()]
# if you wanna filter a specific columns with a condition on rows
print df[(df['col1']==0) & (df['col2']==0)]

这篇关于如何按索引值和任何列中的值搜索 pandas 数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆