【发布时间】:2021-12-21 15:26:44
【问题描述】:
我有这样的数据:
category = ['Car','Car','Car','Car','Truck','Truck','Truck']
name = ['Camry','Camry','Camry','Camry','Tacoma','Tundra','Tundra']
year = ['2007','2007','2008','2009','2010','2010','2011']
vals = [0.1,0.5,0.2,0.9,0.8,0.4,0.9]
df = pd.DataFrame({'Category': category,
'Name': name,
'Year': year,
'Vals': vals})
| index | Category | Name | Year | Vals |
|---|---|---|---|---|
| 0 | Car | Camry | 2007 | 0.1 |
| 1 | Car | Camry | 2007 | 0.5 |
| 2 | Car | Camry | 2008 | 0.2 |
| 3 | Car | Camry | 2009 | 0.9 |
| 4 | Truck | Tacoma | 2010 | 0.8 |
| 5 | Truck | Tundra | 2010 | 0.4 |
| 6 | Truck | Tundra | 2011 | 0.9 |
然后,我有一组(类别、名称、年份)组合,我想为其过滤数据框。它们可以是任何格式,但在这里它们位于数据框中。
combinations_i_want = pd.DataFrame()
# (Car, Camry, 2007)
combinations_i_want = combinations_i_want.append({'Category':'Car', 'Name':'Camry','Year':'2007'},ignore_index=True) # 2 matches in df
# (Truck, Tundra, 2010)
combinations_i_want = combinations_i_want.append({'Category':'Truck', 'Name':'Tundra','Year':'2010'},ignore_index=True) # 1 match in df
我想提取 df 中与这两种组合完全匹配的行。这些将是第 0、1 和 5 行。结果表如下所示:
| index | Category | Name | Year | Vals |
|---|---|---|---|---|
| 0 | Car | Camry | 2007 | 0.1 |
| 1 | Car | Camry | 2007 | 0.5 |
| 5 | Truck | Tundra | 2010 | 0.4 |
注意:我不需要旧索引,它们只是为了帮助可视化。
我该怎么做?
【问题讨论】:
标签: pandas multi-index