重复pandas数据帧中的行

时间:2017-09-26 20:51:47

标签: python pandas numpy dataframe

我有一个数据框,我想双倍' (或三倍,或......)。我不是试图将数据帧与自身连接起来,即将df的一个完整副本堆叠在df的另一个完整副本的顶部。

从这开始:

import pandas as pd
from io import StringIO
from IPython.display import display

A_csv = """country
Afghanistan
Brazil
China"""
with StringIO(A_csv) as fp:
    A = pd.read_csv(fp)
display(A)

结果

       country
0  Afghanistan
1       Brazil
2        China

我想得到这样的东西;索引和缩进并不是那么重要。

     country
0  Afghanistan
1  Afghanistan
2  Brazil
3  Brazil
4  China
5  China

3 个答案:

答案 0 :(得分:1)

使用np.repeat

df = pd.DataFrame(A.values.repeat(2), columns=A.columns)
df

       country
0  Afghanistan
1  Afghanistan
2       Brazil
3       Brazil
4        China
5        China

对于N-D数据帧,应使用axis中的repeat参数扩展解决方案:

df = pd.DataFrame(A.values.repeat(2, axis=0), columns=A.columns)

答案 1 :(得分:0)

您可以使用np.repeat

pd.DataFrame(np.repeat(df['country'], 2)).reset_index(drop = True)

    country
0   Afghanistan
1   Afghanistan
2   Brazil
3   Brazil
4   China
5   China

答案 2 :(得分:0)

使用pd.concat

pd.concat([df]*2,axis=0).sort_index().reset_index(drop=True)
Out[56]: 
       country
0  Afghanistan
1  Afghanistan
2       Brazil
3       Brazil
4        China
5        China