我有一个从第三方获得的数据框:
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/