我有一个数据框,其中有三列作为ID,名称和社交网站,如何找到所有社交网站/或其中任何一个的公共ID /或相关数据。数据如下
ID Name Social_Site
1 Jon Facebook
1 Jon Twitter
2 Bob Twitter
2 Bob Linkedin
3 Tony Facebook
3 Tony Linkedin
4 Geon Twitter
4 Geon Facebook
4 Geon Linkedin
因此,所有网站中的常见ID是
ID Name
4 Geon
仅在Facebook和Twitter之间
ID Name
1 Jon
4 Geon
非常感谢帮助!
答案 0 :(得分:3)
您可以使用pivot
:
print (df.pivot(index='ID', columns='Social_Site', values='Name'))
Social_Site Facebook Linkedin Twitter
ID
1 Jon Jon None
2 None Bob Bob
3 Tony Tony None
4 Geon Geon Geon
编辑:
对于NaN
使用dropna
的删除行:
print (df.pivot(index='ID', columns='Social_Site', values='Name')
.dropna())
Social_Site Facebook Linkedin Twitter
ID
4 Geon Geon Geon
print (df.pivot(index='ID', columns='Social_Site', values='Name')[['Facebook','Twitter']]
.dropna())
Social_Site Facebook Twitter
ID
4 Geon Geon
print (df.pivot(index='ID', columns='Social_Site', values='Name')[['Facebook','Linkedin']]
.dropna())
Social_Site Facebook Linkedin
ID
1 Jon Jon
3 Tony Tony
4 Geon Geon
如果需要所有列,请在subset
中使用参数dropna
:
print (df.pivot(index='ID', columns='Social_Site', values='Name')
.dropna(subset=['Facebook','Linkedin']))
Social_Site Facebook Linkedin Twitter
ID
1 Jon Jon None
3 Tony Tony None
4 Geon Geon Geon