我在从以下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

我在想用这个go 掉空格:

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
  • 要删除列表的分解窗口列
  • 以COLUMN为窗口,以INDEX为学生,以COUNT为聚集函数执行PIVOT,最后用0​填充NAN

Python相关问答推荐

Python无法在已导入的目录中看到新模块

将HTML输出转换为表格中的问题

提取两行之间的标题的常规表达

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

比较两个数据帧并并排附加结果(获取性能警告)

使用索引列表列表对列进行切片并获取行方向的向量长度

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

使用groupby Pandas的一些操作

如何使用pytest来查看Python中是否存在class attribution属性?

Python—从np.array中 Select 复杂的列子集

Pandas—在数据透视表中占总数的百分比

给定高度约束的旋转角解析求解

在两极中过滤

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

处理具有多个独立头的CSV文件

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

我对这个简单的异步者的例子有什么错误的理解吗?

从嵌套极轴列的列表中删除元素

如何使用大量常量优化代码?