Python 3.x 使用多个索引获取部分数据帧

Python 3.x 使用多个索引获取部分数据帧,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个pandas数据帧,我想让它的一部分传递一个名称列表,作为索引1和索引2: 这是我的数据帧的一个示例: | index1 | index2 | | |-----------------------------| | chicago | rome | 0.22 | | berlin | praha | 1.22. | ... 我想得到一个新的数据帧,它只包含城市列表中index1和index2的dos元组 如果我这样做: df.loc['chic

我有一个pandas数据帧,我想让它的一部分传递一个名称列表,作为索引1和索引2:

这是我的数据帧的一个示例:

| index1  |  index2  |        |
|-----------------------------|
| chicago |  rome    |  0.22  |
| berlin  |  praha   |  1.22. |
...
我想得到一个新的数据帧,它只包含城市列表中index1和index2的dos元组

如果我这样做:

df.loc['chicago','rome']
我得到了
0.22
,但我想传递一个index1和INDE2中的城市列表:类似这样:

df.loc[list_ofCities1, list_ofCities2]

在熊猫中有什么方法可以做到这一点吗?

你很接近了,一对熊猫需要
元组:

df.loc[('chicago', 'rome')]
要检查多个值,请使用:

或具有以下元组列表:

样本

df = pd.DataFrame({
        'A':list('abcdec'),
         'E':[5,3,6,9,2,4],
         'F':list('aaabgg')
}).set_index(['A','F'])['E']


list_ofCities1 = list('abc')
list_ofCities2 = list('ang')

df = df[df.index.isin(list(zip(list_ofCities1, list_ofCities2)))]
print (df)
A  F
a  a    5
c  g    4
Name: E, dtype: int64
另一个想法是使用
loc

df = df.loc[df.index.intersection(list(zip(list_ofCities1, list_ofCities2)))]
print (df)
A  F
a  a    5
c  g    4
Name: E, dtype: int64

您很接近,一对需要
元组

df.loc[('chicago', 'rome')]
要检查多个值,请使用:

或具有以下元组列表:

样本

df = pd.DataFrame({
        'A':list('abcdec'),
         'E':[5,3,6,9,2,4],
         'F':list('aaabgg')
}).set_index(['A','F'])['E']


list_ofCities1 = list('abc')
list_ofCities2 = list('ang')

df = df[df.index.isin(list(zip(list_ofCities1, list_ofCities2)))]
print (df)
A  F
a  a    5
c  g    4
Name: E, dtype: int64
另一个想法是使用
loc

df = df.loc[df.index.intersection(list(zip(list_ofCities1, list_ofCities2)))]
print (df)
A  F
a  a    5
c  g    4
Name: E, dtype: int64