簡體   English   中英

通過嵌套字典鍵對pandas數據幀進行分組

[英]Group pandas dataframe by a nested dictionary key

我有一個pandas數據框,其中一列是字典類型。 這是一個示例數據幀:

import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 
                   'b': [4,5,6], 
                   'version': [{'major': 7, 'minor':1}, 
                               {'major':8, 'minor': 5},
                               {'major':7, 'minor':2}] })

DF:

   a  b                   version
0  1  4  {'minor': 1, 'major': 7}
1  2  5  {'minor': 5, 'major': 8}
2  3  6  {'minor': 2, 'major': 7}

我正在尋找一種方法來通過一個字典鍵對數據幀進行分組; 在這種情況下,通過版本標簽中的鍵對df數據幀進行分組。

我嘗試了一些不同的東西,從將字典密鑰傳遞給dataframe groupby函數,`df.groupby(['version'] ['major']),由於major不是數據幀標簽的一部分,因此無效將版本分配給數據框索引,但到目前為止沒有任何工作。 我也試圖將字典作為數據框本身的附加列來展平,但這似乎有其自身的問題。

任何的想法?

PS對於格式化很抱歉,這是我的第一個stackoverflow問題。

選項1

df.groupby(df.version.apply(lambda x: x['major'])).size()

version
7    2
8    1
dtype: int64

df.groupby(df.version.apply(lambda x: x['major']))[['a', 'b']].sum()

在此輸入圖像描述

選項2

df.groupby(df.version.apply(pd.Series).major).size()

major
7    2
8    1
dtype: int64

df.groupby(df.version.apply(pd.Series).major)[['a', 'b']].sum()

在此輸入圖像描述

你可以這樣做:

In [15]: df.assign(major=df.version.apply(pd.Series).major).groupby('major').sum()
Out[15]:
       a   b
major
7      4  10
8      2   5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM