В приведенной ниже таблице данных я группируюсь по трем полям: «Тема», «Rep» и «yval».Пример n строк из каждой группы в pandas
import pandas as pd
yval = [[1]*30 + [2]*20 + [1]*20 + [2]*30 ]
yval = reduce(lambda x,y: x+y, yval)
df = pd.DataFrame({'yval': yval , 'xval':np.random.randn(100)})
df['Subject'] = ['S01'] * 50 + ['S02'] * 50
l = [[x] * 10 for x in range(3)] + [[x] * 10 for x in range(2)] + [[x] * 10 for x in range(2)] + [[x] * 10 for x in range(3)]
l = reduce(lambda x,y: x+y,l)
df['Rep'] = l
df
for k, t in df.groupby(['Subject', 'yval', 'Rep']):
print k
('S01', 1, 0)
('S01', 1, 1)
('S01', 1, 2)
('S01', 2, 0)
('S01', 2, 1)
('S02', 1, 0)
('S02', 1, 1)
('S02', 2, 0)
('S02', 2, 1)
('S02', 2, 2)
Я пытаюсь найти способ, чтобы выбрать n
строки из группы в каждой. В этом примере, предполагая n = 2
, мы можем получить следующий результат. Если n=4
, я ожидаю всего (весь фреймворк).
('S01', 1, 0)
('S01', 1, 2)
('S01', 2, 0)
('S01', 2, 1)
('S02', 1, 0)
('S02', 1, 1)
('S02', 2, 1)
('S02', 2, 2)
Я не уверен, что правильно понял вопрос. Что значит «выбрать все данные, относящиеся к двум случайно выбранным группам»? Из приведенного ниже результата я не могу представить, что вы хотите удалить две группы? –
На рисунке выше я заинтересован в выборе строк 'n' из каждой группы, окрашенных в разные цвета. «Выбрать все данные» означает извлечение коррелирующих данных из фактического кадра данных. – learner