Вот мой DataFrame панд:
id_country txt_template_1 txt_template_2 id_set id_question txt_question
0 NEUTRAL template neutral 1 template neutral 2 1 1 1_1
1 NEUTRAL template neutral 1 template neutral 2 1 2 1_2
2 NEUTRAL template neutral 1 template neutral 2 1 3 1_3
3 NEUTRAL template neutral 1 template neutral 2 1 4 1_4
4 NEUTRAL template neutral 1 template neutral 2 2 1 2_1
5 NEUTRAL template neutral 1 template neutral 2 2 2 2_2
6 NEUTRAL template neutral 1 template neutral 2 2 3 2_3
7 NEUTRAL template neutral 1 template neutral 2 2 4 2_4
8 FRA template FRA 1 template FRA 2 1 1 1_1
9 FRA template FRA 1 template FRA 2 1 2 1_2
10 FRA template FRA 1 template FRA 2 1 3 1_3
11 FRA template FRA 1 template FRA 2 1 4 1_4
12 FRA template FRA 1 template FRA 2 2 1 2_1
13 FRA template FRA 1 template FRA 2 2 2 2_2
14 FRA template FRA 1 template FRA 2 2 3 2_3
15 FRA template FRA 1 template FRA 2 2 4 2_4
Вот моя функция на данный момент:
def ask_question(df):
grouped_country = df.groupby(['id_country'])
# loop through each group of country
for country_id, group_country_df in grouped_country:
grouped_id_set = group_country_df.groupby(['id_set'])
# loop through each group of id_set
for set_id, group_set_df in grouped_id_set:
print(set_id)
вывод print(set_id)
дает мне следующее:
(1,)
(2,)
(1,)
(2,)
(1,)
(2,)
[]
Кажется, что group_country_df.groupby(['id_set'])
создает кортеж значений id_set
DataFrame, но, насколько я понимаю, этого не должно быть.
Что я делаю не так? И как убедиться, что set_id
действительно является значением id_set
, а не кортежем?
Вы группируете, используя список (group_country_df.groupby(['id_set'])
), поэтому создается MultiIndex с одним уровнем, который затем преобразуется в кортеж в вашем цикле for
.
Используйте только имя столбца:
# ...
grouped_id_set = group_country_df.groupby('id_set')
# ...
Пример вывода:
1
2
1
2