我有一个字典,其中的值是列表:
dict = {1: ['a','b'], 2:['c', 'd']}
我想将字典映射到我的数据帧的col1。
col1
a
c
如果col1的值是我的字典中的一个值,那么我想用字典键的值替换col1的值。
像这样,我的数据框将成为:
col1
1
2
提前致谢
答案 0 :(得分:2)
我会以正确的方式转换字典:
mapping = {}
for key, values in D.items():
for item in values:
mapping[item] = key
然后
df['col1'] = df['col1'].map(mapping)
答案 1 :(得分:1)
您还可以尝试将stack
+ reset_index
和set_index
与map
一起使用。
d = pd.DataFrame({1: ['a','b'], 2:['c', 'd']})
mapping = d.stack().reset_index().set_index(0)["level_1"]
s = pd.Series(['a', 'c'], name="col1")
s.map(mapping)
0 1
1 2
Name: col1, dtype: int64
逐步演示
d.stack()
0 1 a
2 c
1 1 b
2 d
dtype: object
d.stack().reset_index()
level_0 level_1 0
0 0 1 a
1 0 2 c
2 1 1 b
3 1 2 d
d.stack().reset_index().set_index(0)
level_0 level_1
0
a 0 1
c 0 2
b 1 1
d 1 2
最后,我们选择level_1
列作为传递map
函数的映射。
答案 2 :(得分:0)
你的意思是这样吗???
D = {1 : ['a', 'b'], 2 : ['c', 'd']}
for key, value in D.items():
for each in value:
if each in D[key]:
print(each, "is in D[%s]" % key)
O / P:
a is in D[1]
b is in D[1]
c is in D[2]
d is in D[2]