我有一个类似下面的数据框..
dish_quant_bought dish_name
20 A
18 B
20 A
18 B
20 A
18 B
10 C
18 B
10 C
18 B
20 D
20 D
20 D
20 D
我想为给定的菜名提取相应的dish_quant_bought .. 所以对于菜A,它应该只返回20,因为B是18,C是10&因为D是20
我正在尝试下面的代码,但它不起作用..
df_['dish_quant_bought']['dish_name'] == 'A'
请帮助..
答案 0 :(得分:2)
不清楚为什么你有重复但你可以使用布尔条件来掩盖df并返回感兴趣的col:
In [256]:
df = df.drop_duplicates()
df
Out[256]:
dish_quant_bought dish_name
0 20 A
1 18 B
6 10 C
10 20 D
In [257]:
df.loc[df['dish_name']=='A', 'dish_quant_bought']
Out[257]:
0 20
Name: dish_quant_bought, dtype: int64
原始df上的面具:
In [259]:
df['dish_name']=='A'
Out[259]:
0 True
1 False
2 True
3 False
4 True
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
Name: dish_name, dtype: bool
您可以在过滤后调用unique
而不先调用drop_duplicates
来获取唯一值:
In [297]:
df.loc[df['dish_name']=='A', 'dish_quant_bought'].unique()
Out[297]:
array([20], dtype=int64)
答案 1 :(得分:1)
好吧,如果它们具有相同的数量值,您可以通过使用groupby然后在所选列上表示它将产生相同的值
df.groupby(["dish_name"])["dish_quant_bought"].mean()
然后只需选择您想要的任何名称