【发布时间】:2013-06-02 06:46:08
【问题描述】:
在 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)]
【问题讨论】:
-
我认为答案是否定的......但你可以编写一个辅助函数来做到这一点。
-
Pandas 对文件的改进?我发现你正在寻找的糖很有用,希望它能以某种方式内置
标签: python indexing dataframe pandas