在多索引数据帧上应用reptitive序列

时间:2016-11-04 17:29:18

标签: python pandas numpy

我有一个多索引数据框,其中最内层索引可以是不等长度,我希望能够添加具有重复值的另一列,但由于行计数不相等,我无法这样做:

df['marker'] = np.repeat([0,1,2], len(df), axis = 0)
ValueError: Length of values does not match length of index

这是我的数据框示例:

                               close
date    ticker      expiry_dt   
2016-07-27  BHEL    2016-07-28  147
                    2016-08-25  147
                    2016-09-29  150
2016-07-28  BHEL    2016-07-28  149
                    2016-08-25  147
                    2016-09-29  149
2016-07-29  BHEL    2016-08-25  149
                    2016-09-29  149

如您所见,最里面的索引('expirty_dt')长度不等。我想要的输出是:

django docs

我可以通过一个循环实现这一点,但是我有一个大型数据库,并且循环在每天这样做效率很低。提前致谢

2 个答案:

答案 0 :(得分:1)

你想要

hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = yoururl
hibernate.connection.username = youruserid
hibernate.connection.password = yourpwd
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

答案 1 :(得分:0)

您的np.repeat表达式生成一个整数为3*len(df)的数组。

In [176]: np.repeat([0,1,2],3)
Out[176]: array([0, 0, 0, 1, 1, 1, 2, 2, 2])
In [177]: _.shape
Out[177]: (9,)

有一个不同的转发器

In [178]: np.tile([0,1,2],3)
Out[178]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])

但仍有一个问题是总数字是否合适。