Python Dict、Lambda x、map() 不起作用
Posted
技术标签:
【中文标题】Python Dict、Lambda x、map() 不起作用【英文标题】:Python Dict, Lambda x, map() doesn't work 【发布时间】:2015-03-09 20:44:10 【问题描述】:我正在尝试使用以下代码重新标记/组合我的市场标签。但是,一切都以超快的速度运行,实际上并没有发生任何映射,只是将原始列返回给我。 company 是表名,company.market 是market 的列。 company是一个dataframe,导入了pandas和numpy。
Eg. company_name market value
'AA' 'Bio-Pharm' $1,000
'BB' 'Biotechnology' $2,000
我想使用我的代码将 AA 公司的市场重新标记为“Biothchnology”...
market_mapping =
'Bio-Pharm': 'Biotechnology',
'Biomass Power Generation': 'Biotechnology',
'Bioinformatics': 'Biotechnology',
'Biometrics': 'Biotechnology',
'Biotechnology and Semiconductor': 'Biotechnology',
'Biofuels':'Biotechnology'
f = lambda x: market_mapping.get(x,x)
company.market = company.market.map(f)
你能帮我看看这里出了什么问题吗?提前感谢您的帮助:)
【问题讨论】:
什么是company
,什么是company.market
?
company.market
这个变量是什么?
嗨@BrenBarn 我已经更新了我的问题。感谢您的评论!
@EllieZhao:我从你的问题中得知company
是一个熊猫数据框。那是对的吗?如果是这样,你需要这么说。在纯 Python 中没有“表”之类的东西。一般来说,如果您的问题与使用某些库有关,您需要提及。
你真的需要给出一个简单的可重现的例子——有人可以复制和粘贴来测试的东西。从您尝试添加新列market2
的原始代码中,我认为问题在于使用点语法——但您已将其更改为company.market
。现在,我想知道您的 market
列是否包含前导和尾随撇号,或者这正是您用来表示它们是字符串的原因。
【参考方案1】:
company
是一个数据框,market
是一个对象,但还不是字符串。
我将代码修改为:
f = lambda x: market_mapping.get(str(x),x)
代码有效!
【讨论】:
以上是关于Python Dict、Lambda x、map() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
python之lambda,filter,map,reduce函数
Python(3.8):map(lambda x:x.method(),list_of_objects)不起作用[重复]