如何在 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 中获得两列的组合? [复制]的主要内容,如果未能解决你的问题,请参考以下文章