我有一个这样的数据帧
key epic uname port
0 PORT-100 None user5 None
1 PORT-101 None user1 None
2 PORT-102 None NA None
3 PORT-103 None NA None
4 PORT-104 None user2 None
5 PORT-105 None user3 None 我有一本字典
{'PORT-10': ['PORT-100', 'ST-111'],
'PORT-100': ['PORT-105', ],
'PORT-101': ['PORT-103']}我希望根据端口字典更改dataframe的端口列,即,如果df中的Any键与字典中的值列表匹配,则将该dict键分配给df' port‘,如下所示
for port in port_dict:
df.loc[df['key'].isin(port_dict[port]),'port']=port它在我的mac上运行得很好,但在linux上却出现了关键错误。我试过使用try...except key error,但没有成功。我在这两种情况下都使用python 3.6。你知道为什么即使我使用相同的python版本,它在linux环境下的表现也会不同吗?
发布于 2018-01-19 15:33:20
正如评论中所指出的,这可能是由于使用了不同版本的熊猫。无论如何,更常用的方法是使用Series.map。您可以阅读有关通过data in the docs进行矢量化操作的更多信息。
port_dict2 = {v: k for k, vs in port_dict.items() for v in vs}
df['port'] = df['key'].map(port_dict2)这适用于我的Mac和Linux Mint VM。
https://stackoverflow.com/questions/48335755
复制相似问题