我有一个简单的dataframe
(df),如下所示:
index Job Person
1 j1 Cathy
2 j2 Mark
3 j3 Cathy
4 j4 Steve
5 j5 Cathy
6 Cathy
7 j1 Cathy
我想将上述dataframe
转换为:
Person CountJob JobDetails
Cathy 4 j1;j3;j5
Mark 1 j2
Steve 1 j4
也就是说,删除空值,为每个人加入唯一的工作
我可以使用groupby
部分解决这个问题:
df.groupby('Person').agg(CountJob=('Job','count'),
JobDetails=('Job',lambda x: ';'.join(x.dropna()))
)
我可以删除空值,但似乎无法获得唯一值;在上面的示例中,对于“Cathy”,“JobDetails”变为j1;j3;j5;j1
另一种方法是将索引设置为
Person
和stack
以删除任何空值,然后我们可以毫无问题地应用任何group by参数用
dropna
添加unique
链可以考虑在聚合之前放弃null:
相关问题 更多 >
编程相关推荐