这是我的熊猫数据框:
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'])
正在创建 DataFrame 的 id_set
值的元组,但根据我的理解,它不应该。
我错了什么?如何确保
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