I have a pandas.DataFrame as follows:
df1 = 
    a    b
0   1    2
1   3    4
I'd like to make this three times to become:
df2 =
    a    b
0   1    2
0   1    2
0   1    2
1   3    4
1   3    4
1   3    4
df2 is made from a loop, but it is not efficient.
How can I get df2 from df1 using a matrix way which is faster?
Build a one dimensional indexer to slice both the the values array and index.  You must take care of the index as well to get your desired results.
np.repeat on an np.arange to get the indexerr = np.arange(len(df)).repeat(3)
pd.DataFrame(df.values[r], df.index[r], df.columns)
   a  b
0  1  2
0  1  2
0  1  2
1  3  4
1  3  4
1  3  4
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With