在 pandas 中,DataFrames 允许组合列来构建索引(如果每一行都有来自这些列的唯一值组合)。这样做的好处之一是简化语法,而不是:
my_data_frame[(my_data_frame['column_name_1']==0) & (my_data_frame['column_name_2']==1)]
我们可以用:
my_data_frame[(0,1)]
这是我如何使用多个列来构建索引的示例:
import pandas as pd
ls = [{'col1':10, 'col2':0, 'col3':0, 'col4':100}, {'col1':20, 'col2':0, 'col3':1, 'col4':200}, {'col1':30, 'col2':1, 'col3':0, 'col4':300}, {'col1':40, 'col2':1, 'col3':1, 'col4':400}]
df = pd.DataFrame(ls).set_index(['col2','col3'])
df.ix[(0,0)]['col1'] # returns 10
df.ix[('col3'=1, 'col2'=0)] # <----- This does not work. (SyntaxError: invalid syntax)
是否可以执行上述代码最后一行中给出的操作?我当然可以:
df[(1, 2, 0, 'aaa', 10)]
但为此我总是需要记住索引的顺序。如果我能做类似的事情会更好:
df[(age=10, scale=2, grade=0, name='aaa', size=1)]