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

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

我有一个数据框架,其中包含专业和调查问卷中的问题。我试图总结出我们对哪个专业使用的问卷,但我们对不同的专业有类似的问题,尽管我们没有相同的问卷。所以我想找出相似的问题给相似的专业。基本上,我有这个。

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
.
.
.

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

python pandas group-by pandas-groupby
1个回答
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

1
投票

你差不多了,你需要做的就是用你的代码结果创建一个新的df。

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

现在你可以访问df2,并做你需要的事情。

这是你要找的吗?


1
投票

你可以用这个。

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'代替','。

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