Python Pandas 在 DataFrame 中聚合系列数据
Python Pandas Aggregate Series Data Within a DataFrame
在一个数据框中,我正在尝试拆分应用组合到一个包含系列数据元素的列。 (我搜索过 SO 但没有找到任何与数据框中的系列有关的内容。)
数据框:
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
ex = {'account': [1, 1, 1, 2, 2],
'subaccount': [1, 2, 3, 1, 2],
'account_type': ['A', 'A', 'B', 'A', 'B'],
'data': [(1, 2, 3), (4, 5, 6), (7, 8, 9), (1, 3, 5), (2, 4, 6)]}
df = DataFrame(ex, columns=['account', 'subaccount', 'account_type', 'data'])
然后我groupby聚合,像这样。
result = (df.groupby(['account', 'account_type'])
.agg({'subaccount': np.sum}))
这给了我
subaccount
account account_type
1 A 3
B 3
2 A 1
B 2
但我想要的是
subaccount
account account_type
1 A (5, 7, 9)
B (7, 8, 9)
2 A (1, 3, 5)
B (2, 4, 6)
我可能遗漏了一些明显的东西,但我想不出解决方案。
这个有效
result = df.groupby(['account', 'account_type'])\
.apply(lambda x : [sum(y) for y in zip(*x["data"])])
但是对于大型数据集来说它可能会很慢
>>> df.groupby(['account', 'account_type']).apply(
lambda group: tuple(group['data'].apply(pd.Series).sum()))
account account_type
1 A (5, 7, 9)
B (7, 8, 9)
2 A (1, 3, 5)
B (2, 4, 6)
dtype: object
在一个数据框中,我正在尝试拆分应用组合到一个包含系列数据元素的列。 (我搜索过 SO 但没有找到任何与数据框中的系列有关的内容。)
数据框:
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
ex = {'account': [1, 1, 1, 2, 2],
'subaccount': [1, 2, 3, 1, 2],
'account_type': ['A', 'A', 'B', 'A', 'B'],
'data': [(1, 2, 3), (4, 5, 6), (7, 8, 9), (1, 3, 5), (2, 4, 6)]}
df = DataFrame(ex, columns=['account', 'subaccount', 'account_type', 'data'])
然后我groupby聚合,像这样。
result = (df.groupby(['account', 'account_type'])
.agg({'subaccount': np.sum}))
这给了我
subaccount
account account_type
1 A 3
B 3
2 A 1
B 2
但我想要的是
subaccount
account account_type
1 A (5, 7, 9)
B (7, 8, 9)
2 A (1, 3, 5)
B (2, 4, 6)
我可能遗漏了一些明显的东西,但我想不出解决方案。
这个有效
result = df.groupby(['account', 'account_type'])\
.apply(lambda x : [sum(y) for y in zip(*x["data"])])
但是对于大型数据集来说它可能会很慢
>>> df.groupby(['account', 'account_type']).apply(
lambda group: tuple(group['data'].apply(pd.Series).sum()))
account account_type
1 A (5, 7, 9)
B (7, 8, 9)
2 A (1, 3, 5)
B (2, 4, 6)
dtype: object