如何通过遍历字典从 pandas 数据框中获取最相关的行
How to get the most related row from a pandas dataframe by iterating over a dictionary
假设我有这样的数据框:
name
color
shape
taste
Apple
Red
Heart
Sweet
Banana
Yellow
Long
Sweet
Cherry
Pink
Circular
Sour
Damson
Magenta
Circular
Sour
Eggplant
Violet
Long
Bitter
对于输入,我有一个元素的字典,类似于 new_fruit = {'name' : 'Tangerine' , 'color' : 'Orange' , 'shape' : 'Circular', 'taste' : 'Sour'}
我想要的是遍历此字典以从数据框中获取最相同的行(值)。在这种情况下,Circular 和 Sour 即 Damson 和 Cherry 行。
我试过代码
for key, value in new_fruit.items():
if key == 'name':
continue
if dataframe[key] == value: # Tried with isin too
print(dataset[dataset[key] == value])
break
我知道有问题,但想不通,你能帮我解决这个问题吗?
也许这对你有用:
mask = df == pd.Series(new_fruit)
items = df.loc[mask.any(axis=1), 'name'].tolist()
输出:
>>> items
['Cherry', 'Damson']
假设我有这样的数据框:
name | color | shape | taste |
---|---|---|---|
Apple | Red | Heart | Sweet |
Banana | Yellow | Long | Sweet |
Cherry | Pink | Circular | Sour |
Damson | Magenta | Circular | Sour |
Eggplant | Violet | Long | Bitter |
对于输入,我有一个元素的字典,类似于 new_fruit = {'name' : 'Tangerine' , 'color' : 'Orange' , 'shape' : 'Circular', 'taste' : 'Sour'}
我想要的是遍历此字典以从数据框中获取最相同的行(值)。在这种情况下,Circular 和 Sour 即 Damson 和 Cherry 行。
我试过代码
for key, value in new_fruit.items():
if key == 'name':
continue
if dataframe[key] == value: # Tried with isin too
print(dataset[dataset[key] == value])
break
我知道有问题,但想不通,你能帮我解决这个问题吗?
也许这对你有用:
mask = df == pd.Series(new_fruit)
items = df.loc[mask.any(axis=1), 'name'].tolist()
输出:
>>> items
['Cherry', 'Damson']