【问题标题】:Unique Column Combinations to Column names in Pandas [duplicate]Pandas中列名的唯一列组合[重复]
【发布时间】:2018-02-09 00:21:56
【问题描述】:

我有 14,000 个数据帧,每个数据帧有 30,000 行。一个示例 df 看起来像这样 urban restricted speed_bin True False 0-2.5 True False 0-2.5 True False 0-2.5 True True 0-2.5 True False 2.5-4.5

我需要汇总所有数据帧的数据,但不能将其全部保存在内存中。我想计算每个数据框的唯一行组合。对于单个数据框,我可以做

df.groupby(['urban','restricted','speed_bin']).size().reset_index() \
                                               .rename(columns={0:'count'})

urban   restricted  speed_bin   count
0   False   False   0-2.5       45
1   False   False   2.5-7.5     12
2   False   False   7.5-12.5    16
3   False   False   12.5-17.5   20
4   False   False   17.5-22.5   4

如何在将计数列作为行内容并保留urbanspeed_bin 列的同时,将其转置并从speed_bin 组合中创建列名?请记住,一个数据框可能没有另一个数据框可能具有的可能组合的实例。

所以,最后我将有四行对应于城市和限制的组合,并具有相应的速度箱计数。

提前致谢!

【问题讨论】:

  • 你是什么意思“离开urban和speed_bin列”?这似乎与最后一句话不一致。

标签: python pandas combinations


【解决方案1】:
df.set_index(['urban', 'restricted', 'speed_bin'])['count'].unstack()

返回

speed_bin         0-2.5  12.5-17.5  17.5-22.5  2.5-7.5  7.5-12.5
urban restricted                                                
False False          45         20          4       12        16

【讨论】:

    【解决方案2】:

    一种方法是:

    df.pivot_table(index=['urban', 'restricted'], values=['count'], columns=['speed_bin'])
    

    这会返回:

    #                  count                                     
    # speed_bin        0-2.5 12.5-17.5 17.5-22.5 2.5-7.5 7.5-12.5
    # urban restricted                                           
    # False False         45        20         4      12       16
    

    【讨论】:

      猜你喜欢
      • 2017-07-14
      • 2021-07-16
      • 2017-05-10
      • 2018-05-15
      • 2023-04-07
      • 2018-06-27
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      相关资源
      最近更新 更多