【问题标题】:Pandas Groupby date index and count values in list of integersPandas Groupby 日期索引和整数列表中的计数值
【发布时间】:2014-08-22 20:31:57
【问题描述】:

我有以下数据,这是一个日期索引,日期范围在“2014-08-22”和“2014-08-28”之间,一列包含整数列表。我正在尝试找出一个不错的 Pandas 方法来按日期对数字进行分组。期望的结果也在下面。

日期:

                                                                                values
date                                                                                        
2014-08-22                 [179, 187, 188, 190, 194, 198, 2, 226, 26, 311, 322, 325, 341, 6]
2014-08-22                 [179, 187, 188, 190, 194, 198, 2, 226, 26, 311, 322, 325, 341, 6]
2014-08-22  [167, 172, 178, 189, 198, 2, 20, 211, 212, 22, 274, 276, 287, 318, 321, 326, 48]
2014-08-23  [167, 172, 178, 189, 198, 2, 20, 211, 212, 22, 274, 276, 287, 318, 321, 326, 48]
2014-08-23  [167, 172, 178, 189, 198, 2, 20, 211, 212, 22, 274, 276, 287, 318, 321, 326, 48]

所需的数据透视/分组/交叉表输出:

      2014-08-22  2014-08-23
179       2           0
167       1           2
etc... 

我知道如何创建一个出现次数如下所示的字典,但不知道如何按索引对其进行分组

from collections import Counter
values_list = list(chain.from_iterable(df['values']))
Counter(values_list)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这是一种方法。

    # expand lists of data into into columns
    t = df['values'].apply(lambda x: pd.Series(1, index=x))
    t = t.fillna(0) #Filled by 0
    
    # sum observations across days and transpose 
    t.groupby(level=0).sum().T
    

    【讨论】:

    • 非常漂亮。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 2020-05-21
    • 2019-03-31
    • 1970-01-01
    • 2014-03-07
    • 2021-02-18
    • 2023-03-04
    • 2021-07-17
    相关资源
    最近更新 更多