pandas - 当元组是字典的值时仅检索元组的一个元素
问题描述
我正在尝试用字典映射我的 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
谢谢!
解决方案
用于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
推荐阅读
- git - 子树存储库和主存储库都包含相同的文件。这是正常的 git 行为吗?
- html - Bootstrap 使用另一列的空间
- python - Matplotlib 集合未清除
- python - 将连续变量下采样到均匀分布
- typescript - 是否可以创建一个导出 mixins 的 Typescript 模块?
- discord.py - How could I ping @here in Discord.py?
- postgresql - 加速一个简单的 postgres 查询
- php - 在 laravel 形式中,url 有效,但路由无效
- java - 无法正常运行我的(自己的)Minecraft Mod
- c# - 有什么方法可以与 blazor 页面的主要布局进行通信