我写了一些代码,将生成一个随机生成的索引(500行)的数据框。但是,任务是仅从最后50行(从随机生成的数据帧)中获取5个随机选择的行。我设法选择了5行,但问题是它们不是根据需要专门从数据帧的后50个索引中提取的。另外,您不能使用硬编码。
我尝试了以下代码,该代码应仅从数据帧的后50行中选择5行:
def randomly_generated_dataframe(self, df1, select=5, start_range=50, end_range=1):
selected_indices = np.random.random_integers(len(df1.index[-start_range:]), len(df1.index[:-end_range]), select)
return df1.loc[selected_indices]
我没有收到任何这样的错误消息,但是输出不正确,因为所选的5行似乎来自dataframe
的任何部分,而不仅仅是预期的最后50行。
答案 0 :(得分:1)
我假设您希望选择行而不替换行,因此选择replace=False
。
import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame(np.random.randint(10, size=(1000, 2)))
df.columns = ['x', 'y']
indices = np.random.choice(df.index[-50:], size=5, replace=False)
result = df.loc[indices]
print(result)
输出:
x y
963 9 8
988 6 3
986 6 3
990 9 5
955 1 2
答案 1 :(得分:0)
import random
def randomly_generated_dataframe( df1, select=5, start_range=50):
# find the index of selected rows
selected_indices = random.sample(list(df.index.values), select)[-start_range:]
# use iloc to avoid index is set up as defalut
return df1.iloc[selected_indices]
randomly_generated_dataframe( df1)