当元组是字典的值时仅检索元组的一个元素

Posted

技术标签:

【中文标题】当元组是字典的值时仅检索元组的一个元素【英文标题】:Retrieving only one element of a tuple when the tuple is the value of a dictionary 【发布时间】:2021-05-15 04:08:35 【问题描述】:

我正在尝试将我的 df 列映射到字典,其中字典包含元组作为值。我希望能够只返回输出列中元组的第一个值。有没有办法做到这一点?

情况:

d = 'key1': (1, 2, 3)
df['lookup_column'] = 'key1'
df['return_column'] = df['lookup_column'].map(d)

输出:

df['return_column'] = (1, 2, 3)

添加这个会返回错误:

df['return_column'] = df['return_column'][0]

运行它也会返回错误:

df['return_column'] = df['lookup_column'].map(d[0])

期望的结果:

df['return_column'] = 1

谢谢!

【问题讨论】:

【参考方案1】:

str 用作Iterable 的第一个元素,此处为tuple - 如果不匹配则返回NaN

df['return_column'] = df['return_column'].str[0]

大家一起:

df = pd.DataFrame('lookup_column':['key1','key2'])

d = 'key1': (1, 2, 3)
df['return_column1'] = df['lookup_column'].map(d)
df['return_column2'] = df['lookup_column'].map(d).str[0]

如果不匹配,则使用dict.get 作为默认值的第二种选择,这里是输出元组,因此可以使用元组(np.nan,)

df['return_column4'] = df['lookup_column'].map(lambda x: d.get(x, (np.nan,)))
df['return_column5'] = df['lookup_column'].map(lambda x: d.get(x, (np.nan,))[0])
print (df)
  lookup_column return_column1  return_column2 return_column4  return_column5
0          key1      (1, 2, 3)             1.0      (1, 2, 3)             1.0
1          key2            NaN             NaN         (nan,)             NaN

【讨论】:

以上是关于当元组是字典的值时仅检索元组的一个元素的主要内容,如果未能解决你的问题,请参考以下文章

元组+字典类型day06

元祖和字典

基本数据类型____元组

基本数据类型____元组

Python中的基本数据类型之元组类型

python列表和元组的区别