DataFrame groupby 函数从列返回元组而不是值

问题描述 投票:0回答:1

这是我的熊猫数据框:

    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
的值而不是元组?

python dataframe group-by tuples
1个回答
0
投票

您正在使用列表 (

group_country_df.groupby(['id_set'])
) 进行分组,因此这会创建一个具有单个级别的 MultiIndex,然后在您的
for
循环中将其转换为元组。

仅使用列名称:

# ...
    grouped_id_set = group_country_df.groupby('id_set')
    # ...

输出示例:

1
2
1
2
© www.soinside.com 2019 - 2024. All rights reserved.