使用 Pandas 从多维数据中分组

Posted

技术标签:

【中文标题】使用 Pandas 从多维数据中分组【英文标题】:Group by from multidimensional data using Pandas 【发布时间】:2021-12-02 02:30:27 【问题描述】:

当我需要按“party_b”分组数据帧并计算“usage_type”为“SMSMT”或“MOC”的次数时,我遇到了一个问题。

数据集:


list = [
    '_score': 1.220763,
    '_source': 'response_id': '8801756091550_1633620760',
     'usage_type': 'SMSMT',
     'party_b': '8801810107222',
     'party_a': '8801756091550',
     'additionalProperties': ,
     'event_time': '20211007093240',
   '_score': 1.220763,
    '_source': 'response_id': '8801756091550_1633625609',
     'usage_type': 'MOC',
     'party_b': '8801736636044',
     'party_a': '8801756091550',
     'partya_original': None,
     'additionalProperties': ,
     'event_time': '20211007105329',
   '_score': 1.220763,
    '_source': 'response_id': '8801756091550_1633625851',
     'usage_type': 'MOC',
     'party_b': '8801777701826',
     'party_a': '8801756091550',
     'partya_original': None,
     'additionalProperties': ,
     'event_time': '20211007105731',
   '_score': 1.220763,
    '_source': 'response_id': '8801756091550_1633626326',
     'usage_type': 'SMSMO',
     'party_b': '8801736636044',
     'party_a': '8801756091550',
     'partya_original': None,
     'additionalProperties': ,
     'event_time': '20211007110526']```
Desired output:
'party_b' -> SMSMT(how many times comes) ->MOC(how many times comes) -> SMSMO(how many times comes)

How should I achieve this?

【问题讨论】:

【参考方案1】:

用途:

df = pd.DataFrame(data=data)
count = df['_source'].apply(pd.Series).groupby('usage_type').size()

输出:

usage_type
MOC      2
SMSMO    1
SMSMT    1

【讨论】:

先生,非常感谢...但是我需要party_b 的答案。例如,对于 '8801736636044' MOC 2 SMSMO 1 SMSMT 1 for '8801777701826' MOC 2 SMSMO 1 SMSMT 1 我的数据集非常大。所以我需要这种方式。 您可以尝试使用groupby(['party_b', 'usage_type'])

以上是关于使用 Pandas 从多维数据中分组的主要内容,如果未能解决你的问题,请参考以下文章

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表]

Pandas 从分组数据框中计算连续相等值的长度

Python / 使用 Pandas 从文本文件中读取和分组数据

从 pandas 数据帧到多维 numpy 数组以与 tensorflow 兼容

pandas 如何对上千万数据分组“快速”取第一行和最后一行

对 pandas 数据框中的连续值进行分组