【问题标题】:Pandas Pivot table : Get only the value counts and not columns熊猫数据透视表:仅获取值计数而不是列
【发布时间】:2019-12-10 16:31:47
【问题描述】:

我正在尝试使用包含许多列的数据集制作数据透视表。 当使用下面的代码制作数据透视表时,我得到了所有我不想要的列。

我只想要计数而不是那里的任何其他列。我能做到吗?

table1 = pd.pivot_table(dfCALCNoExcecption,index=['AD Platform','Agent Program'],columns=None,aggfunc='count')

上述代码在excel输出中的输出如下(我没有粘贴整个,因为大约有50列):

我想要得到的期望输出:

【问题讨论】:

  • 最好使用groupby: df.groupby('AD Platform')['Agent Program'].value_counts()
  • @QuangHoang,谢谢,这行得通,它是按值计数排序的,可以按代理版本排序吗?
  • 我认为可以是 .value_counts(sorted=False) 或者您可以将其与 sort_index 链接。
  • @QuangHoang ,我发现按代理版本排序。我试过这个,没有关键字作为“排序”:TypeError:value_counts()得到了一个意外的关键字参数“排序”

标签: pandas pivot-table


【解决方案1】:

您可以根据“AD 平台”和“代理程序”列按数据分组。之后,您可以对具有机器数量的列的所有值求和。这是我的代码:

df.groupby(['AD Platform', 'Agent Program'])['AD Hostname'].sum()

【讨论】:

  • df.groupby(['AD Platform', 'Agent Program'])['AD Hostname'].count() 有效。我正在尝试按代理版本对此进行排序。感谢这将 .sum() 更改为 count()
【解决方案2】:

这并不完整,但 Groupby 可以实现其中的一部分。我不确定如何将第三列重命名为“计数”

dfAgentTable3 =  dfCALCNoExcecption.groupby(['AD Platform', 'Agent Program'])['AD Hostname'].count().sort_index(ascending=True)

【讨论】:

    猜你喜欢
    • 2021-02-28
    • 2023-01-11
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多