Python 重新组织列和行的数据帧
我正在尝试合并来自提供者的频道列表,以将所有频道显示为行索引,并将值显示为提供者名称。目前组织如下:Python 重新组织列和行的数据帧,python,pandas,Python,Pandas,我正在尝试合并来自提供者的频道列表,以将所有频道显示为行索引,并将值显示为提供者名称。目前组织如下: DIRECTV FUBO YOUTUBE TV 0 A&E A&E ABC 1 ABC ADULT SWIM AMC 2 ACCUWEATHER AMC ANIMAL PLANET 3
DIRECTV FUBO YOUTUBE TV
0 A&E A&E ABC
1 ABC ADULT SWIM AMC
2 ACCUWEATHER AMC ANIMAL PLANET
3 AMC ANIMAL PLANET BBC
4 ANIMAL PLANET BBC BBC WORLD
我希望结果是(标题行可以是任何内容):
我相信这应该通过简单的连接、合并或其他方式来完成,但我无法让它工作。任何帮助都将不胜感激
注意:上面的图片显然只是列表的一个小样本,索引列应该是来自所有提供者的每个唯一通道。类似于“df.values.unique()。是的,我知道这不起作用。IIUC,这是一个
melt
+交叉表问题
如果您想要一个简单的1
或0
(如果存在值),只需从交叉表中省略aggfunc
和values
参数即可:
pd.crosstab(u['channel'], u['provider'])
请以文本而不是图像的形式发布框架。在每个单元格中重复这个词是没有意义的。更自然的是,您将提供程序作为列标题,而不是1和0表示存在或不存在。(这是一个典型的虚拟问题)谢谢,这成功了。我不明白,但我会努力学习。熔化+交叉表。
u = df.melt(
var_name='provider',
value_name='channel'
)
pd.crosstab(
index=u['channel'],
columns=u['provider'],
values=u['provider'],
aggfunc='first'
)
provider DIRECTV FUBO YOUTUBE TV
channel
A&E DIRECTV FUBO NaN
ABC DIRECTV NaN YOUTUBE TV
ACCUWEATHER DIRECTV NaN NaN
ADULT SWIM NaN FUBO NaN
AMC DIRECTV FUBO YOUTUBE TV
ANIMAL PLANET DIRECTV FUBO YOUTUBE TV
BBC NaN FUBO YOUTUBE TV
BBC WORLD NaN NaN YOUTUBE TV
pd.crosstab(u['channel'], u['provider'])
provider DIRECTV FUBO YOUTUBE TV
channel
A&E 1 1 0
ABC 1 0 1
ACCUWEATHER 1 0 0
ADULT SWIM 0 1 0
AMC 1 1 1
ANIMAL PLANET 1 1 1
BBC 0 1 1
BBC WORLD 0 0 1