2014-11-12 2 views
2

Я пытаюсь выбрать данные, считанные из файла, представленные значениями один и ноль. Я хочу иметь возможность выбирать строки из списка значений и в то же время выбирать для любого столбца, в котором каждая из выбранных строк имеет значение единицы. Чтобы сделать его более сложным, я также хочу выбрать строки из списка значений, где все значения в столбце для этих строк равны нулю. Это возможно? В конечном счете, если бы другой метод, кроме кадра данных pandas, работал бы лучше, я был бы готов попробовать это.Как искать кадр данных pandas по значению индекса и значению в любом столбце

Чтобы быть ясным, можно выбрать любую колонку, и я не знаю, какие из них раньше времени.

Спасибо!

+1

Может ваш предоставить некоторые данные примера, вместе с желаемым выходом? – joris

ответ

6

all()any()ix[] Операторы. Проверьте official documentation или this thread для получения более подробной информации

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)] 
+2

Я думаю, мы пытаемся побудить людей использовать '.loc' или' .iloc' вместо '.ix' в наши дни из-за трудно объясняемой семантики' .ix'. – DSM

+0

Хорошая точка @DSM **. Loc/.iloc ** были введены в 0.11 и рекомендованы для использования для выбора индексации пользователей. –