pandas - 如何将包含值列表的数据框列转换为具有出现次数的单独列?

标签 pandas dataframe

我有一个这样的框架

presence_data = pd.DataFrame({
    "id": ["id1", "id2"],
    "presence": [
        ["A", "B", "C", "A"],
        ["G", "A", "B", "I", "B"],
    ]
})
<表类="s-表"> <头> id 存在 <正文> id1 [A, B, C, A] id2 [G, A, B, I, B]

我想把上面的改成这样的...

<表类="s-表"> <头> id A B C G 我 <正文> id1 2 1 1 0 0 id2 1 2 0 1 1

目前,我有一种方法可以遍历行并遍历存在列中的值,然后根据遇到的值创建/更新具有计数的新列。我想看看有没有更好的方法。

最佳答案

根据 Henry Ecker 在评论中的反馈进行编辑,不妨在这里找到更好的答案:

您可以使用 pd.explode() 将列表中的所有内容变成单独的行,然后使用 pd.crosstab() 计算出现次数。

df = presence_data.explode('presence')
pd.crosstab(index=df['id'],columns=df['presence'])

这给了我以下内容:

presence  A  B  C  G  I
id
id1       2  1  1  0  0
id2       1  2  0  1  1

关于pandas - 如何将包含值列表的数据框列转换为具有出现次数的单独列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70139966/

相关文章:

python Pandas : reduce dataframe to contain with duplicate states

python / Pandas : create summary table

python - 减去 Pandas 数据框

r - 如何获取与data.frame或距离矩阵中给定值匹配的单元格的行数和列数?

python - 用 Pandas 连接数据帧交替行

python - 将系列与 DataFrame 相乘,其中 series.index == dataframe.columns

Python pandas 从字符串中删除子字符串之后的部分

python - Pandas 列选择 : non commutative bitwise OR when selecting on str and NaN

r - 从 data.frame 中删除一列会导致不必要的属性丢失

python - Pandas:将 IP 解析为国家/地区的最快方法