熊猫数据帧内两列列表中的元素计数



当列表位于熊猫数据帧列中时,我需要获取列表中每个元素的频率。

它喜欢data.groupby(["element in a","element in b"]).size(),但列"A"和列"B"是列表。

我需要"a"和 b'b' 中每个组合的大小

in data:
a           b
0   [17, 21, 22]    [zhinan, shejiyuanze, fankui]
1   [17, 21, 23]    [zhinan, shejiyuanze]
2   [17, 21]        [zhinan, shejiyuanze, fankui]
3   [17, 21, 22]    [zhinan, shejiyuanze, fankui]
4   [17, 21]        [zhinan, shejiyuanze, yizhi]

期望输出:

17 21 22 23 
zhinan        5  5  2  1
shejiyuanze   .  .  .  . 
fankui        .  .  .  . 
yizhi         .  .  .  .

例如,当a=17且b=zhinan时,数字为5.当a=17且b=fankui时,数字为3;当a=23且b=fankui或b=yizhi时,数字为0。

我想知道是否有一种有效/直接的方法来做到这一点。

谢谢

使用explode分解列表。记得在第二次爆炸前reset_index

然后使用group_by来计算出现次数。

最后使用unstack将系列转换为数据帧

df.explode('a').reset_index(drop=True).explode('b').groupby(['b', 'a']).a.count().unstack()

最新更新