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

python之 《zip,lambda, map》

Python(3.8):map(lambda x:x.method(),list_of_objects)不起作用[重复]

lambda表达式,map函数

python3:lambda,map,filter内置函数