我有一个使用Pygithub从Github存储库中提取的问题的数据框。当前的结构如下所示-
assignees | open? | issue_id
n/a yes 1
[p1, p2] no 2
[p5] no 3
[p1, p5, p2] yes 4
我想修改/旋转表,使其看起来像-
assignee | yes | no
n/a 1 0
p1 1 1
p2 1 1
p5 1 1
我尝试了pd.Series(Counter(chain.from_iterable(df['assignees'])))
,但这将n / a值分成三个单独的值(“ n”,“ /”和“ a”)。我也不确定如何处理另一列中的值。我一直在寻找一种反向的group_by方法,但是到目前为止,我的谷歌搜索技能使我失败了。
要创建测试数据框:
data = {'assignees': ['n/a', ['p1', 'p2'], ['p5'], ['p1', 'p5', 'p2']],
'open?': ['yes', 'no', 'no', 'yes'],
'issue_id': [1,2,3,4]}
df = pd.DataFrame(data)
非常感谢!
答案 0 :(得分:4)
IIUC,让我们尝试熊猫0.25.0+ explode
:
df_out = df.set_index(['open?','issue_id'])['assignees'].explode().reset_index()
df_out.pivot_table(index='assignees',
columns='open?',
values='issue_id',
aggfunc='count',
fill_value=0)
输出:
open? no yes
assignees
n/a 0 1
p1 1 1
p2 1 1
p5 1 1