【发布时间】:2017-08-20 17:28:35
【问题描述】:
我有一个数据框,我将其分组如下并将某些操作应用于特定列:
df = df.groupby(['A', 'B', 'C']).agg({'ID': 'count', 'AMT': 'sum'})
对于每个 groupby 组合 (~15) 我想随机抽样属于每个组合的行并返回一个样本 ID 并在第三个输出列中报告它。或者我真的只是希望该组合中的行中的一个 ID 出现在表中,我不在乎它是否“随机”。
我尝试了以下方法:
df = df.groupby(['A', 'B', 'C']).agg({'ID': 'count', 'AMT': 'sum', 'ID': 'sample'})
并收到错误:
AttributeError: Cannot access callable attribute 'sample' of 'SeriesGroupBy' objects, try using the 'apply' method
于是我尝试了:
func = lambda x: x.sample
df = df.groupby(['A', 'B', 'C']).agg({'ID': 'count', 'AMT': 'sum', 'ID': apply(func)})
没用所以我试了
df = df.groupby(['A', 'B', 'C']).agg({'ID': 'count', 'AMT': 'sum', 'ID': lambda x: x.sample})
这也不起作用。我查看了以下相关问题的链接,但它们似乎也没有帮助我。
Select multiple groups from pandas groupby object
http://pandas.pydata.org/pandas-docs/stable/groupby.html
Get specific element from Groups after applying groupby - PANDAS
How to access pandas groupby dataframe by key
https://chrisalbon.com/python/pandas_apply_operations_to_dataframes.html
关于如何处理的任何想法?
【问题讨论】:
标签: python python-2.7 pandas