使用字典作为参数映射 Pandas 系列,其中值是元组

Posted

技术标签:

【中文标题】使用字典作为参数映射 Pandas 系列,其中值是元组【英文标题】:Map a Pandas series with a dictionary as argument, where the value is a tuple 【发布时间】:2020-04-01 02:29:35 【问题描述】:

我正在尝试用字典映射我的 df 列。我的字典包含元组作为值,我只想要元组的第一个元素。我怎样才能做到这一点?

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

到目前为止我得到了什么:

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

我想要什么:

df['mapped column'] = 1

有什么想法吗?

【问题讨论】:

【参考方案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

另一种解决方案是 map original 并通过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

【讨论】:

我明白了,但是当您映射列时,您如何访问第一个元素? df['mapped column] = df['original column'].map(my_dict) 将返回元组,而不是元组的第一个元素

以上是关于使用字典作为参数映射 Pandas 系列,其中值是元组的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何将具有重复索引值的数据框转换为字典

从两个熊猫系列(csv的列作为DataFrame)创建元素字典

Pandas:根据另一列的键在现有列上映射字典值以替换 NaN

在 Python 中使用 Excel 文件作为 pandas 数据框的映射

Pandas:迭代连接存储在数据框字典中的列

如何使用 Pandas 从 DataFrame 或 np.array 中的列条目创建字典