Python 使用字典中的键值将列添加到pandas.Dataframe
我有以下数据框: 我有下面的字典:Python 使用字典中的键值将列添加到pandas.Dataframe,python,pandas,dictionary,Python,Pandas,Dictionary,我有以下数据框: 我有下面的字典: d = {v:k for k, v in resource_ids_dict.items()} #alternative #d = dict(zip(resource_ids_dict.values(), resource_ids_dict.keys())) df['new'] = df['ResourceSetID'].map(d) 资料来源:奥地利:158623272,“保加利亚”:1550004006,“克罗地亚”:1131119835,“丹麦”:17
d = {v:k for k, v in resource_ids_dict.items()}
#alternative
#d = dict(zip(resource_ids_dict.values(), resource_ids_dict.keys()))
df['new'] = df['ResourceSetID'].map(d)
资料来源:奥地利:158623272,“保加利亚”:1550004006,“克罗地亚”:1131119835,“丹麦”:1703440195,
“芬兰”:2005848983,“法国”:1264698819,“德国”:1907737079,“希腊”:2113941104,
“意大利”:27898245,“荷兰”:1832579427,“挪威”:1054291604,“波兰”:1188865122,
“罗马尼亚”:270819662;“俄罗斯”:2132391298;“塞尔维亚”:1155274960;“南非”:635838568,
“西班牙”:52600180,“瑞士”:842323896,“土耳其”:1716131192,“英国”:199152257}
我使用上述字典值来调用供应商API。然后,我将所有返回数据附加到数据帧df中
我现在想做的是在ID之后添加一列,它是ResourceSetID中dictionary值的字典键
我在网上浏览了一下,但没有找到任何东西,可能是因为我缺乏准确的关键字搜索。当然这应该是一个班轮?我希望避免在数据帧和字典中循环并以这种方式映射。使用,但首先必须使用字典中的键交换值:
d = {v:k for k, v in resource_ids_dict.items()}
#alternative
#d = dict(zip(resource_ids_dict.values(), resource_ids_dict.keys()))
df['new'] = df['ResourceSetID'].map(d)
使用但首先必须使用字典中的键交换值:
d = {v:k for k, v in resource_ids_dict.items()}
#alternative
#d = dict(zip(resource_ids_dict.values(), resource_ids_dict.keys()))
df['new'] = df['ResourceSetID'].map(d)
谢谢它正在完成任务,但返回以下警告:C:\Users\User\Documents\Anaconda\lib\site packages\ipykernel\u launcher.py:5:SettingWithCopyWarning:试图在数据帧切片的副本上设置值。尝试使用.loc[row\u indexer,col\u indexer]=value,请参见文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.htmlreturning-a-view-versus-a-copy . 你知道这意味着什么吗?@Dean-这意味着数据帧是由某个过滤器创建的,需要。复制好,所以你要复制你过滤过的数据帧,而不是改变原来的数据帧本身?@Dean-确切地说,你需要修改你的代码,然后再以类似的方式映射-如果仍然存在问题,请给我看地图之前使用的代码,我可以帮你找到需要添加的地方。copyNo,太好了。谢谢你的解释。我对python还是很陌生,所以对我来说最重要的是要理解:df是原始数据帧的“过滤”版本,因为只需要原始10+中的3列。所以,复制效果很好-再次感谢!谢谢它正在完成任务,但返回以下警告:C:\Users\User\Documents\Anaconda\lib\site packages\ipykernel\u launcher.py:5:SettingWithCopyWarning:试图在数据帧切片的副本上设置值。尝试使用.loc[row\u indexer,col\u indexer]=value,请参见文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.htmlreturning-a-view-versus-a-copy . 你知道这意味着什么吗?@Dean-这意味着数据帧是由某个过滤器创建的,需要。复制好,所以你要复制你过滤过的数据帧,而不是改变原来的数据帧本身?@Dean-确切地说,你需要修改你的代码,然后再以类似的方式映射-如果仍然存在问题,请给我看地图之前使用的代码,我可以帮你找到需要添加的地方。copyNo,太好了。谢谢你的解释。我对python还是很陌生,所以对我来说最重要的是要理解:df是原始数据帧的“过滤”版本,因为只需要原始10+中的3列。所以,复制效果很好-再次感谢!