当元组是字典的值时仅检索元组的一个元素
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
【讨论】:
以上是关于当元组是字典的值时仅检索元组的一个元素的主要内容,如果未能解决你的问题,请参考以下文章