在数据框列中查找字典的值并修改它

我现在处理 DataFrames 和 Dictionaries,但我有一个问题,我有一个字典“ Fruits ”


{BN:'Banana', LM:'Lemon', AP:'Apple' ..... etc}

还有一个 DataFrame-“股票”:


   Fruit             Price

0  Sweet Mango           1

1  Green Apple           2

2  Few blue Banana       0

3  Black Banana          5

我魔杖做的下一件事:从替换所有的值Stock['Fruit']用Fruits.values()这种方式:如果从水果值出现在Stock['Fruit']一行,将被替换是这样的:


几根蓝香蕉---> 香蕉


黑香蕉---> 香蕉


现在 DataFrame Stock将如下所示:


   Fruit             Price

0  Sweet Mango           1

1  Green Apple           2

2  Banana                0

3  Banana                5

我找到了不同的代码来替换或检查字典中的值是否出现在 DataFrame 中


Stock['Fruit'] = Stock.Fruit.map(Fruits)


if (Fruits.values() in Stock['Fruit'] for item in Stock)


any('Mango' in Stock['Fruit'] for index,item in Stock.iterrows())

但我找不到任何东西来更新 DataFrame 的行


交互式爱情
浏览 142回答 3
3回答

慕田峪7331174

使用字符串方法进行条件和提取所需的值,pat = r'({})'.format('|'.join(d.values()))cond = df['Fruit'].str.contains('|'.join(d.values()))df.loc[cond, 'Fruit'] = df['Fruit'].str.extract((pat), expand = False)    Fruit       Price0   Sweet Mango 11   Apple       22   Banana      03   Banana      5编辑:正如@user3483203 所建议的,您可以在提取模式后使用原始值填充缺失值。df['Fruit'] = df['Fruit'].str.extract(pat).fillna(df.Fruit)

LEATH

IIUC,您可以使用apply()自定义函数:import pandas as pddf = pd.DataFrame([['Sweet Mango', 1],['Green Apple', 2],['Few blue Banana', 0],['Black Banana', 5]],  columns=['Fruit','Price'])fruits = {'BN':'Banana', 'LM': 'Lemon', 'AP':'Apple', 'MG': 'Mango'}def find_category(x):  return [k for k in fruits.values() if k in x][0]df['Fruit'] = df['Fruit'].apply(find_category)产量:    Fruit  Price0   Mango      11   Apple      22  Banana      03  Banana      5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python