加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用MultiIndex的Pandas转换不起作用

发布时间:2020-12-20 11:03:13 所属栏目:Python 来源:网络整理
导读:基本上,当列是多索引时,pandas.DataFrame.shift不起作用: 鉴于这些值和当前设置: idx = ['2018-03-14T06:15:39.000000000','2018-03-14T06:16:15.000000000','2018-03-14T06:16:50.000000000','2018-03-14T06:17:47.000000000','2018-03-14T06:18:46.00000
基本上,当列是多索引时,pandas.DataFrame.shift不起作用:

鉴于这些值和当前设置:

idx = ['2018-03-14T06:15:39.000000000','2018-03-14T06:16:15.000000000','2018-03-14T06:16:50.000000000','2018-03-14T06:17:47.000000000','2018-03-14T06:18:46.000000000']


vals = [[9.15390039e+03,9.99999978e-03,1.64927383e+04,4.00000000e+00,1.00000000e+00,0.00000000e+00,9.15388965e+03,1.64928926e+04,9.15388965e+03],[9.15390039e+03,1.64847031e+04,9.00000000e+00,1.64848359e+04,3.00000000e+00,[9.15999023e+03,1.64850938e+04,7.00000000e+00,9.16000000e+03,1.64851660e+04,2.00000000e+00,9.16000000e+03],[9.16424023e+03,1.64821777e+04,2.20000000e+01,9.16425000e+03,1.64848125e+04,2.30000000e+01,9.16425000e+03],[9.16425000e+03,1.64847891e+04,1.00000000e+01,9.16424023e+03,1.64849219e+04,1.20000000e+01,9.16424023e+03]]

cols = [('t_2','price'),('t_2','spread'),'volume_24h'),'time_diff'),'buy'),'sell'),('t_1',('t_0','target')]

 df = pandas.DataFrame(vals,index=idx,columns=pandas.MultiIndex.from_tuples(cols))

 df['t_0']['target'] = df['t_0']['target'].shift(-1)
 df.head()

返回完全相同的数据帧,并且永远不会发生转换.一段时间以来,我一直在摸不着头脑,但却无法理解.

我错过了一些完全明显的东西吗

解决方法

您正在寻找

df[('t_0','target')] = df[('t_0','target')].shift(-1)
df[('t_0','target')]

2018-03-14T06:15:39.000000000    9153.88965
2018-03-14T06:16:15.000000000    9160.00000
2018-03-14T06:16:50.000000000    9164.25000
2018-03-14T06:17:47.000000000    9164.24023
2018-03-14T06:18:46.000000000           NaN
Name: (t_0,target),dtype: float64

请注意,当您单独索引两次时,您将修改副本,而不是原始副本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读