Python 创建新的dataframe列作为其他列的函数
我有一个带有Python 创建新的dataframe列作为其他列的函数,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个带有Country列的数据框。它为大约15个国家举办了比赛。我想使用映射字典添加一个大陆列,大陆dict,该字典具有从国家名称到大陆名称的映射) 我看到这两个都起作用了 df[“人口”]=df[“能源供应”]/df[“人均能源供应”] df['contraction']=df.apply(lambda x:contractiondict[x['Country']],axis='columns') 但事实并非如此 df[‘大陆]]=大陆dict[df[‘国家]] 看起来问题在于df['Co
Country
列的数据框。它为大约15个国家举办了比赛。我想使用映射字典添加一个大陆
列,大陆dict
,该字典具有从国家名称到大陆名称的映射)
我看到这两个都起作用了
df[“人口”]=df[“能源供应”]/df[“人均能源供应”]
df['contraction']=df.apply(lambda x:contractiondict[x['Country']],axis='columns')
df[‘大陆]]=大陆dict[df[‘国家]]
df['Country']
是一个series对象,因此该语句不够智能,无法将最后一条语句视为与2相同
问题
apply
路线- 在案例1中,您正在处理两个熊猫系列,因此它知道如何处理它们
- 在案例2中,您有一个python字典和pandas系列,pandas不知道如何处理字典(df['country']是pandas系列,但不是字典中的键)
大陆dict
,它看起来像大陆dict
是一个Python字典。在这种情况下,
ContinentDict[some_key]
是一个纯粹的Python调用,而不管对象some\u key
是什么。这就是为什么第三次调用失败的原因,因为df['Country']
不在字典键中(而且永远不可能,因为字典键是不可变的)
在这种情况下,Python只允许索引精确的键,并在键不在字典中时抛出错误
Pandas确实为您提供了替换/映射值的工具:
df['Continent'] = df['Country'].map(ContinentDict)
如果你真的想回答问题1,你应该重新措辞你的文章,只关注它。如果你只关心回答问题2,请在副本中找到答案。
df['Continent'] = df['Country'].map(ContinentDict)