映射以字典为参数的熊猫系列,其中值是元组

时间:2019-12-07 08:28:09

标签: python pandas dictionary tuples

我正在尝试用字典映射我的df列。我的字典包含元组作为值,我只想要元组的第一个元素。我该如何实现?

my_dict = {'foo': (1, 0.1)}
df['original_column'] = 'foo'

到目前为止,我得到了:

df['mapped column'] = (1, 0.1)

我想要什么:

df['mapped column'] = 1

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Series.map用于由字典推导创建的新字典中,以获取元组的第一个值:

df = pd.DataFrame({
'original_column':['foo','bar','baz']
})

my_dict = {'foo': (1, 0.1), 'bar':(2,0.5),'baz':(5,6)}
d = {k:v[0] for k, v in my_dict.items()}
df['mapped column'] = df['original_column'].map(d)
print (df)
  original_column  mapped column
0             foo              1
1             bar              2
2             baz              5

另一种解决方案是映射原始地图,并通过str[0]选择元组的第一个值,但是如果使用较大的DataFrame,性能会更差:

my_dict = {'foo': (1, 0.1), 'bar':(2,0.5),'baz':(5,6)}
df['mapped column'] = df['original_column'].map(my_dict).str[0]
print (df)
  original_column  mapped column
0             foo              1
1             bar              2
2             baz              5