【发布时间】: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列是否包含前导和尾随撇号,或者这正是您用来表示它们是字符串的原因。
标签: python dictionary pandas lambda