python - 如何在 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
解决方案
我想这就是你想要的。您需要传递所需的行数并将其放入 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])]
推荐阅读
- r - R usmap - 如何显示两种不同的颜色:一种用于正值渐变,另一种显示负值
- r - 搜索包括空格在内的词组的最佳方法是什么?
- python - 沿第一维的轴按列缩放 3d numpy 数组
- php - 如何在 1 个功能 Laravel 中使用 2 个翻译?
- json - jq bash 向 json 文件中添加 json 字段
- r - 标记表格标题时包括适当的上标
- plot - 如何仅在 x 个条形定义的范围内绘图?
- python - BeautifulSoup:为什么 .select 方法返回一个空列表?
- java - 服务器错误,状态代码:400,错误代码:100005,消息:您已超出组织的内存限制
- css - CSS 的样式链接语法