我现在处理数据帧和字典,我有一个问题,
我有一本字典“Fruits"
{BN:'Banana', LM:'Lemon', AP:'Apple' ..... etc}
还有一个数据框-”Stock":
Fruit Price
0 Sweet Mango 1
1 Green Apple 2
2 Few blue Banana 0
3 Black Banana 5
我想做接下来的事情:
替换所有值Stock['Fruit']
与Fruits.values()
这边走:
如果 Fruits 中的值出现在Stock['Fruit']
行将被替换为这样:
少量蓝色Banana--->Banana
Black Banana--->Banana
现在是数据框Stock看起来像这样:
Fruit Price
0 Sweet Mango 1
1 Green Apple 2
2 Banana 0
3 Banana 5
我找到了不同的代码来替换或检查字典中的值是否出现在数据框中
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 的行
使用字符串方法进行条件并提取所需值,
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)