按特定顺序重复 pandas 个系列

Repeating pandas Series with specific order

使用 repeat() 函数重复 pandas 系列:

s = pd.Series(['a', 'b', 'c'])
s.repeat(2)
0    a
0    a
1    b
1    b
2    c
2    c
dtype: object

需要得到这样的输出:

0    a
1    b
2    c
0    a
1    b
2    c
dtype: object

如果性能很重要,请使用 np.tile with Series.loc

a = s.loc[np.tile(s.index, 2)]
print (a)
0    a
1    b
2    c
0    a
1    b
2    c
dtype: object

s = pd.Series(['a', 'b', 'c'])

In [25]: %timeit (s.loc[np.tile(s.index, 2000)])
612 µs ± 26.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [26]: %timeit (pd.concat([s] * 2000))
22.2 ms ± 251 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

编辑:

s = pd.Series(['a', 'b', 'c'], index = pd.date_range('2015-01-01', periods=3))
print (s)

a = s.loc[np.tile(s.index, 2)]
print (a)
2015-01-01    a
2015-01-02    b
2015-01-03    c
2015-01-01    a
2015-01-02    b
2015-01-03    c
dtype: object

您可以使用 from pandas concat 函数,如下所示

 pd.concat([s] * 2)