我在从以下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['']
但即使这样,我也不会在正确的列中得到正确的数字.
谁能告诉我我做错了什么?