如何在 Pandas 中获得两列的组合? [复制]

Posted

技术标签:

【中文标题】如何在 Pandas 中获得两列的组合? [复制]【英文标题】:How can I get the combinations of two columns in Pandas? [duplicate] 【发布时间】:2020-08-14 19:59:26 【问题描述】:

我有一个数据框,其中包含专业和调查中使用的问卷中的问题。我试图总结一下我们针对哪个职业使用了哪个问卷,但是我们对不同的职业有类似的问题,即使我们没有相同的问卷。所以我试图找出类似职业的类似问题。基本上,我有这个:

profession    question
AAAA          question_a
AAAA          question_b 
BBBB          question_a
BBBB          question_d 
CCCC          question_a
CCCC          question_c 

我想得到这样的东西:

question      profession
question_a    AAAA
              BBBB 
              CCCC 
question_d    BBBB  
question_c    CCCC 

或者我可以得到某种列表或字典以便以后使用。

我试过下面的命令:

df.groupby(['question','profession']).count()

并得到输出:

question    profession    other_column_1   other_column_2
question_a  AAAA
            BBBB
.
.
.

它的问题是我实际上无法使用它。我不知道如何访问问题和专业字段,我不知道如何列出组合等。

【问题讨论】:

df.groupby('question')['profession'].agg(list).to_dict()? s = df.groupby('question')['profession'].value_counts()... s.loc[('question_a', 'AAAA')] ........ 【参考方案1】:

我认为你需要这个:

In [676]: grp = df.groupby(['question'])
In [678]: for k,v in grp: 
     ...:     print(v) 
     ...:                                                                                                                                                                                                   
  profession    question
0       AAAA  question_a
2       BBBB  question_a
4       CCCC  question_a
  profession    question
1       AAAA  question_b
  profession    question
5       CCCC  question_c
  profession    question
3       BBBB  question_d

【讨论】:

【参考方案2】:

你快到了。 您需要做的就是使用您的代码结果创建一个新的 df:

df2 = df.groupby(['question','profession']).count()

现在您可以访问 df2 并执行您需要的操作。

这是你要找的吗?

【讨论】:

【参考方案3】:

你可以用这个:

df.groupby('profession')['question'].apply(','.join).reset_index()

输出结果

profession  question
0   AAAA    question_a,question_b
1   BBBB    question_a,question_d
2   CCCC    question_a,question_c

如果您希望每个字符串出现在换行符上,可以将 ',' 替换为 '\n'。

【讨论】:

以上是关于如何在 Pandas 中获得两列的组合? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 中组合文本行

如何基于两列组合两个数据框? [复制]

如何设置具有两列的组合框的值?

如何获得每个唯一列的特定行数? [复制]

在SQL中,如何将两列的数据相乘以获得第三列

Pandas:将依赖于第三列的相同数据框的两列相乘