首页 > 解决方案 > 如何在 pandas DataFrame 中重复一行数据?

问题描述

我写这段代码是为了给我 1 行数据。我想修改它,以便我可以有 N 行。每一行都将使用该函数唯一生成。我不想重复相同的数字。

import numpy as np
import pandas as pd

def repeater(start, stop, df = True):
    a = np.arange(start, stop)
    np.random.shuffle(a)
    if df == True:
        a_df = pd.DataFrame(a).T
        return a_df
    else:
        return a

标签: pythonpandas

解决方案


我想这就是你想要的。您需要传递所需的行数并将其放入 for 循环中。

def repeater(start, stop, num_rows, df = True):
    a_list = []
    df_list = []
    for i in range(num_rows):    
        a = np.arange(start, stop)
        np.random.shuffle(a)
        if df == True:
            df_list.append(pd.DataFrame(a).T)
        else:
            a_list.append(a)
    if df == True:
        a_df = pd.concat(df_list,axis=0).reset_index(drop=True)      
        return a_df
    else:
        return a_list
        
print(repeater(3, 14, 10, df = True))

print(repeater(3, 14, 10, df = False))

输出是数据框或 np 数组列表

   0   1   2   3   4   5   6   7   8   9   10
0   7   4  13   3  12   8   5  10  11   9   6
0  12   4   8   9  13   3   5   7  11   6  10
0  12  10  13  11   8   3   4   5   6   9   7
0   9  12   3  11   6   8   7   5   4  10  13
0   4   8  10  13   6   7   5   9  11   3  12
0  12  10   5   4  11   8   9  13   7   3   6
0   6  10   7   8  12   9   5  11  13   3   4
0   8  11  10   7   4   5   3  12   6  13   9
0  13   4   3   7  12   6  11  10   9   5   8
0  13   7   8  10  11   9   6   4   3   5  12
Out[184]:
[array([11,  6,  8, 10,  4,  9, 12, 13,  7,  5,  3]),
 array([ 5, 10,  6,  4,  9, 13,  3, 11, 12,  8,  7]),
 array([11, 12,  5,  4,  3,  8,  7,  9, 13, 10,  6]),
 array([ 8, 13,  4,  3,  5, 11, 12, 10,  7,  6,  9]),
 array([12,  8, 10,  9,  3,  5,  4,  6, 11,  7, 13]),
 array([ 7,  8,  3,  5, 13, 12,  9,  4, 11,  6, 10]),
 array([10, 13,  6,  3,  5,  4,  7,  8, 12,  9, 11]),
 array([11, 10,  9,  5,  8,  6, 13,  7, 12,  3,  4]),
 array([ 6,  3, 13, 10,  8,  5,  4, 11,  9, 12,  7]),
 array([11,  5,  6, 13,  7,  3,  9, 10,  8,  4, 12])]

推荐阅读