我有一个看起来像这样的pandas数据框
genrename subgenre subgenrename actor
Songs 208 Dance Aamir Khan
Songs 208 Dance Aamir Khan
Songs 211 Romantic Aamir Khan
Movies 1 Romantic Aamir Khan
Songs 208 Dance Aamir Khan
Clips 15 Scenes Aamir Khan
Clips 15 Scenes Aamir Khan,Salman
Clips 12 Romantic Salman
我想要获得的输出数据框看起来像这样
Actor_Name songs clips movies
AmirKhan 4 2 1
SalmanKhan 0 2 0
有人可以用pandas或python的任何其他数据处理库来指导我吗?
由于
答案 0 :(得分:2)
首先使用actor
列aggfunc=len
,str.split
和stack
作为原始列。然后join
与pandas
,pivot_table
和reset_index
(0.18.0
s = df.actor.str.split(',', expand=True).stack()
s.index = s.index.droplevel(-1)
s.name = 'actor1'
df = df.join(s)
print df.pivot_table(index='actor1',
columns='genrename',
aggfunc=len,
values='subgenre',
fill_value=0).reset_index().rename_axis(None, axis=1)
actor1 Clips Movies Songs
0 Aamir Khan 2 1 4
1 Salman 2 0 0
中的新内容):
header('Content-Type: application/json');
echo json_encode($bsnContactSuccess);