python - pandas 使用列拆分作为新索引设置索引

标签 python python-3.x pandas

我有一个从第三方获得的数据框:

r = get_finance_rate([eq_opt_px.index[0],vol_opt_px.index[0]], expiry)

:

    ticker                          field           value
0   SPX US 08/17/2018 C2830.0 Index OPT_FINANCE_RT  2.004648
1   VXX US 08/17/2018 C27.0 Index   OPT_FINANCE_RT  2.03248

由于返回的输出格式不符合我的需要,我想重置索引。我正在尝试做的事情的明显解决方案是

r['aux id'] = [x.split()[0] for x in r['ticker']]
r = r.set_index('aux id')

结果:

    ticker                          field           value
SPX SPX US 08/17/2018 C2830.0 Index OPT_FINANCE_RT  2.004648
VXX VXX US 08/17/2018 C27.0 Index   OPT_FINANCE_RT  2.03248

但是我想做类似的事情

r = get_finance_rate([eq_opt_px.index[0],vol_opt_px.index[0]], expiry).set_index('ticker'.split(' ')[0])

前面的指令没有执行拆分

ticker                          field           value
SPX US 08/17/2018 C2830.0 Index OPT_FINANCE_RT  2.004648
VXX US 08/17/2018 C27.0 Index   OPT_FINANCE_RT  2.03248

有没有一种方法可以在不创建临时列的情况下完成我想要的?

最佳答案

试试这个单线:

r = get_finance_rate([eq_opt_px.index[0],vol_opt_px.index[0]], expiry)\
       .pipe(lambda x: x.set_index(x.ticker.str.split().str[0]).rename_axis('aux_id')

IIUC,你必须分两步完成:

r = get_finance_rate([eq_opt_px.index[0],vol_opt_px.index[0]], expiry)
r = r.set_index(r.ticker.str.split().str[0]).rename_axis('aux_id')

输出:

                                 ticker           field     value
aux_id                                                           
SPX     SPX US 08/17/2018 C2830.0 Index  OPT_FINANCE_RT  2.004648
VXX       VXX US 08/17/2018 C27.0 Index  OPT_FINANCE_RT  2.032480

关于python - pandas 使用列拆分作为新索引设置索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51616315/

相关文章:

Python 从字符串创建模块并运行该模块

python - Python 3 不显示更改后的 __name__ 属性是否有原因?

python - Pandas 错误 "AttributeError: ' DataFrame' 对象没有属性 'add_categories'“尝试添加定性值时?

python-3.x - Azure Function-使用 python 代码解压缩受密码保护的文件

python - 用 Python 3 中的列表或字典中的内容替换字符串的内容

python - 如果使用 Pandas 在所有列中包含字符串,则对数据框进行样式设置

pandas - 在 groupby 之后获取与另一列中的值相对应的一列中的值

python - pytest-bdd : Importing common steps

python - Flask Forms if 语句返回

python - Pandas 不匹配的 conda 版本