python - 从 pandas 列表列创建堆栈

标签 python pandas stack

我在从以下 df 构建堆栈时遇到问题:

import pandas as pd

df = pd.DataFrame(
    {
        "Student": ['Daphne','Scooby','Daphne','Shaggy','Fred','Daphne'],
        "window": [['Fred'],['Daphne'], [''], ['Daphne'],['Velma','Scrappy'],['Velma','Fred']]
    }
)

它给你:

  Student            window
0  Daphne            [Fred]
1  Scooby          [Daphne]
2  Daphne                []
3  Shaggy          [Daphne]
4    Fred  [Velma, Scrappy]
5  Daphne     [Velma, Fred]

我想创建一个堆栈表来显示每个学生在窗口中看到其他学生的次数。 我希望最终结果是这样的:

        Daphne  Fred  Scrappy  Velma
Daphne       0     2        0      1
Fred         0     0        1      1
Scrappy      0     0        0      0 
Velma        0     0        0      0

我想我可以做这样的事情:

dfd = pd.get_dummies(df["window"].dropna().apply(pd.Series).stack())

它给你:

     Daphne  Fred  Scrappy  Velma
1 0       1     0        0      0
2 0       0     0        0      0
3 0       1     0        0      0
4 0       0     0        0      1
  1       0     0        1      0
5 0       0     0        0      1
  1       0     1        0      0

一旦我实现了,这不会给我我想要的结果:

xrf_df = dfd.T.dot(dfd)

这给了你

            Daphne  Fred  Scrappy  Velma
         1       0     0        0      0
Daphne   0       2     0        0      0
Fred     0       0     2        0      1
Scrappy  0       0     0        1      1
Velma    0       0     1        1      2

我正在考虑用它来删除空白:

dfd = dfd.drop(0)
del dfd['']

但即使这样也无法在正确的列中给出正确的数字。

有人可以告诉我我做错了什么吗?

最佳答案

解决这个问题的一种方法,

df.explode('window').pivot_table(index='Student', columns='window', aggfunc='size', fill_value=0)

O/P;

window      Daphne  Fred  Scrappy  Velma
Student                                 
Daphne   1       0     2        0      1
Fred     0       0     0        1      1
Scooby   0       1     0        0      0
Shaggy   0       1     0        0      0
  • 分解窗口列以删除列表
  • 以列为窗口、索引为学生、计数为聚合函数执行透视,最后用 0 填充 nan ​

关于python - 从 pandas 列表列创建堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73251880/

相关文章:

python-2.7 - 从 DataFrame 并行计算距离相关性 (dcor)

stack - 来自采访 : what's the benefit of the stack in C?

java - 在 Java 中将二维整数数组压入堆栈

python - 我该如何解决这个无法导入错误: cannot import name in python3

python - 我需要 Python 的帮助来检查列表的边界

python - python自动关闭SSH和Telnet吗

python - Pandas 数据框中的分组依据

python - Pandas读取html表到dataframe无法打印

c - Cygwin/Windows 64 位上的堆栈大小是多少?

python - QDateEdit.date().toString ("MMMM dd, yyyy") 不显示英文月份