【发布时间】:2016-05-24 02:57:40
【问题描述】:
例如:
df = pd.DataFrame( {"A": [7001, 8001, 9001]} )
equiv = {1:[7001, 8001], 2: [9001]}
df["B"] = df["A"].map(equiv.get)
以
结束a, b
7001, 1
8001, 1
9001, 2
我在想这样的事情:
df = pd.DataFrame( {"A": [7001, 8001, 9001]} )
equiv = {1:[7001, 8001], 2: 9001}
df["B"] = df["A"].map(equiv.get)
我不想使用equiv = {7001:1, 8001:1, 9001:2},因为在我的实际数据集中我会有很多字符串值映射到1 和2
【问题讨论】:
-
为什么值
9001不在一个元素中list像[9001]? -
@jezrael 哦,感谢那些错别字!
-
我可以将
9001放在一个元素list中,但这不会达到我的目标。也许那看起来会更干净......我会更新它! -
谢谢。您如何看待解决方案将
dictionary of lists更改为inverted dictionary然后使用map?d = dict( (v,k) for k in equiv for v in equiv[k] )和df["B"] = df["A"].map(d) -
我不完全理解...我将不得不谷歌/考虑一下...但根据我的粗略理解,这可能有效!
标签: python-2.7 dictionary pandas apply