我有一个数据框,其中包含两个值之间的对应关系:
另一个只包含其中一个变量的列表:
l = ['a','b','c']
我想制作如下的映射:
df[l[0]]
并获得1
df[l[1]]
并获得2
好像它是一本字典,我怎么能这样做?
答案 0 :(得分:1)
你在找这样的东西吗?
df.loc[df['key']==l[0], 'value']
返回
0 1
1 1
另一种方法是将df的set_index设为key。
df.set_index('key', inplace = True)
df.loc[l[0]].values[0]
答案 1 :(得分:1)
另一种方式是Series
或dict
地图,但必须是key
s的唯一值,drop_duplicates
会有所帮助:
df = pd.DataFrame({'key':list('aabcc'),
'value':[1,1,2,3,3]})
s = df.drop_duplicates('key').set_index('key')['value']
print (s)
key
a 1
b 2
c 3
Name: value, dtype: int64
d = df.drop_duplicates('key').set_index('key')['value'].to_dict()
print (d)
{'c': 3, 'b': 2, 'a': 1}
l = ['a','b','c']
print (s[l[0]])
1
print (d[l[1]])
2