为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

交互式爱情 2021-06-29 12:59:32
我现在处理 DataFrames 和 Dictionaries,但我有一个问题,我有一个字典“ Fruits ”{BN:'Banana', LM:'Lemon', AP:'Apple' ..... etc}还有一个 DataFrame-“股票”:   Fruit             Price0  Sweet Mango           11  Green Apple           22  Few blue Banana       03  Black Banana          5我魔杖做的下一件事:从替换所有的值Stock['Fruit']用Fruits.values()这种方式:如果从水果值出现在Stock['Fruit']一行,将被替换是这样的:几根蓝香蕉---> 香蕉黑香蕉---> 香蕉现在 DataFrame Stock将如下所示:   Fruit             Price0  Sweet Mango           11  Green Apple           22  Banana                03  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 的行
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

使用字符串方法进行条件和提取所需的值,


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       Price

0   Sweet Mango 1

1   Apple       2

2   Banana      0

3   Banana      5

编辑:正如@user3483203 所建议的,您可以在提取模式后使用原始值填充缺失值。


df['Fruit'] = df['Fruit'].str.extract(pat).fillna(df.Fruit)


查看完整回答
反对 回复 2021-07-06
?
LEATH

TA贡献1936条经验 获得超6个赞

IIUC,您可以使用apply()自定义函数:


import pandas as pd


df = 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  Price

0   Mango      1

1   Apple      2

2  Banana      0

3  Banana      5


查看完整回答
反对 回复 2021-07-06
  • 3 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信