[英]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.