我有一个熊猫资料栏,其中一个列是字典类型。这是一个示例dataframe:
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数据按version标签中的主键分组。
我尝试过几种不同的东西,从传递字典键到dataframe函数`df.groupby('version') (因为 part 不是dataframe标签的一部分),再到将版本分配给dataframe索引,但是到目前为止还没有起作用。我还试图将字典作为dataframe本身中的附加列来处理,但这似乎有它自己的问题。
有什么想法吗?
抱歉,格式化了,这是我的第一个堆栈溢出问题。
发布于 2016-08-10 19:11:53
选项1
df.groupby(df.version.apply(lambda x: x['major'])).size()
version
7 2
8 1
dtype: int64df.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: int64df.groupby(df.version.apply(pd.Series).major)[['a', 'b']].sum()

发布于 2016-08-10 19:13:00
你可以这样做:
In [15]: df.assign(major=df.version.apply(pd.Series).major).groupby('major').sum()
Out[15]:
a b
major
7 4 10
8 2 5https://stackoverflow.com/questions/38881679
复制相似问题