如何逐个复制Python数据框?

李博洋*_*李博洋 4 python dataframe pandas

我有pandas.DataFrame如下:

df1 = 
    a    b
0   1    2
1   3    4
Run Code Online (Sandbox Code Playgroud)

我想这三次成为:

df2 =
    a    b
0   1    2
0   1    2
0   1    2
1   3    4
1   3    4
1   3    4
Run Code Online (Sandbox Code Playgroud)

df2 是一个循环,但效率不高.

我怎样才能df2df1使用矩阵方式这是更快?

piR*_*red 5

构建一维索引器来切割values数组和index.您还必须处理索引以获得所需的结果.

  • 使用np.repeatnp.arange获得索引
  • 在值和索引上使用此索引器构造新的数据帧

r = 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
Run Code Online (Sandbox Code Playgroud)


Ste*_*uch 2

我不知道它是否比你的循环更有效,但它很容易构造为:

代码:

pd.concat([df] * 3).sort_index()
Run Code Online (Sandbox Code Playgroud)

测试代码:

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('ab'))
print(pd.concat([df] * 3).sort_index())
Run Code Online (Sandbox Code Playgroud)

结果:

   a  b
0  1  2
0  1  2
0  1  2
1  3  4
1  3  4
1  3  4
Run Code Online (Sandbox Code Playgroud)