问题
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.
Thanks!
回答1:
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)]
来源:https://stackoverflow.com/questions/26896382/how-to-search-pandas-data-frame-by-index-value-and-value-in-any-column