Pandas 创建透视表时的一些混淆

Pandas 创建透视表时的一些混淆,pandas,Pandas,我正在尝试创建一个透视表,但没有得到我想要的结果。无法理解为什么会发生这种情况 我有一个这样的数据框- data_channel_is_lifestyle data_channel_is_bus shares 0 0.0 0.0 593 1 0.0 1.0 711 2 0.0

我正在尝试创建一个透视表,但没有得到我想要的结果。无法理解为什么会发生这种情况

我有一个这样的数据框-

    data_channel_is_lifestyle   data_channel_is_bus     shares
0       0.0                               0.0            593
1       0.0                               1.0            711
2       0.0                               1.0            1500
3       0.0                               0.0            1200
4       0.0                               0.0            505
                                                   shares
data_channel_is_lifestyle   data_channel_is_bus     
            0.0                    0.0             107709305
            1.0                                    19168370            
            1.0                    0.0              7728777
我要查找的结果是索引中的列的名称和列中的股份总数。所以 我这样做了-

news_copy.pivot_table(index=['data_channel_is_lifestyle','data_channel_is_bus'], values='shares', aggfunc=sum)
但我得到的结果是这样的-

    data_channel_is_lifestyle   data_channel_is_bus     shares
0       0.0                               0.0            593
1       0.0                               1.0            711
2       0.0                               1.0            1500
3       0.0                               0.0            1200
4       0.0                               0.0            505
                                                   shares
data_channel_is_lifestyle   data_channel_is_bus     
            0.0                    0.0             107709305
            1.0                                    19168370            
            1.0                    0.0              7728777
我不希望这些0和1,我只希望结果是这样的-

                               shares
data_channel_is_lifestyle     107709305 
data_channel_is_bus           19168370

我该怎么做

正如你所说,这只是矩阵乘法:

df.filter(like='data').T@(df[['shares']])
输出(用于样本数据):


所以你想求和
共享数
,其中
数据频道是生活方式==1
,类似的
数据频道是总线
?@QuangHoang是的,这就是我要找的。你能告诉我怎么做吗?对不起,我听不懂你的答案。像“数据”和“T”之后是什么。它是新版本的熊猫吗?@bholaprasad因为你的
数据频道是生活方式
看起来是二进制的(
0
1
),求和
1
值意味着你求和
数据频道是生活方式
共享
的乘积。这正是。@bholaprasad
df.filter(比如='data')
返回一个数据帧,其中的列以字符串形式包含
数据,然后使用转置和乘法返回上述结果。