(Бьюсь об заклад, это глупый вопрос, извините!)
Вот простой код, повторяющий мою проблему:
rand_series = pd.Series(np.random.randint(1, 99, size = 100))
rand_series.index.name = 'user_id'
rand_series_binned = pd.cut(rand_series, [0, 10, 20, 30, 40, 50, 100])
rand_series_binned_grp = rand_series_binned.groupby(rand_series_binned)
rand_series_binned_sampled = rand_series_binned_grp.apply(lambda grp: grp.sample(1))
rand_series_binned_sampled
Результат, напечатанный на этом
user_id
(0, 10] 32 (0, 10]
(10, 20] 0 (10, 20]
(20, 30] 91 (20, 30]
(30, 40] 75 (30, 40]
(40, 50] 98 (40, 50]
(50, 100] 29 (50, 100]
dtype: category
Categories (6, interval[int64]): [(0, 10] < (10, 20] < (20, 30] < (30, 40] < (40, 50] < (50, 100]]
Как мне получить доступ к каждому элементу того, что есть?
Вот список того, что я пробовал.Есть 6 строк, поэтому я ожидал бы получить первый, таким образом
rand_series_binned_sampled[0]
или
rand_series_binned_sampled.iloc[0]
оба дают результат
Interval(0, 10, closed='right')
Это нерезультат, который я ожидал: 32
.Или я могу индексировать с самого конца, например,
rand_series_binned_sampled[12]
дает
user_id
0 (10, 20]
dtype: category
Categories (6, interval[int64]): [(0, 10] < (10, 20] < (20, 30] < (30, 40] <
(40, 50] < (50, 100]]
Так что, похоже, мои индексы обрабатываются не как индексы строк, а как числа, помещаемые в сегменты,Следующие все выдают ошибки
rand_series_binned_sampled[2,'user_id'] # KeyError
rand_series_binned_sampled[2]['user_id'] # KeyError
rand_series_binned_sampled[2][0] # KeyError
rand_series_binned_sampled[2,0] # KeyError
rand_series_binned_sampled[2].loc('user_id') # ValueError
Я могу посмотреть на ключи и значения, но я не понимаю, результаты
rand_series_binned_sampled.values
дает
[(0, 10], (10, 20], (20, 30], (30, 40], (40, 50], (50, 100]]
Categories (6, interval[int64]): [(0, 10] < (10, 20] < (20, 30] < (30, 40] < (40, 50] < (50, 100]]
rand_series_binned_sampled.keys
дает
<bound method Series.keys of user_id
(0, 10] 32 (0, 10]
(10, 20] 0 (10, 20]
(20, 30] 91 (20, 30]
(30, 40] 75 (30, 40]
(40, 50] 98 (40, 50]
(50, 100] 29 (50, 100]
dtype: category
Categories (6, interval[int64]): [(0, 10] < (10, 20] < (20, 30] < (30, 40] < (40, 50] < (50, 100]]>
Наконец, этот дает TypeError
for key, value in rand_series_binned_sampled:
print(f'key: {key} value: {value}')
Я думаю, что достаточно неудачных примеров, чтобы дать некоторое представление о глубине моего замешательства.Что мне нужно сделать, чтобы пройти через это и получить ключи типа (0, 10]
со значениями вроде 32
или даже просто получить доступ к этим user_id
значениям вообще?