Python 熊猫数据框.Groupby.Agg'中的自定义列选择;词典
我在选择要插入Pandas.DataFrame.Groupby.agg中的列时遇到问题 下面是获取和准备数据的代码Python 熊猫数据框.Groupby.Agg'中的自定义列选择;词典,python,python-3.x,pandas-groupby,Python,Python 3.x,Pandas Groupby,我在选择要插入Pandas.DataFrame.Groupby.agg中的列时遇到问题 下面是获取和准备数据的代码 #数据收集和库导入 从U数据读取器导入数据 作为pd进口熊猫 符号='AAPL' 来源='雅虎' 开始日期='2018-01-01' 结束日期='2019-04-24' 股票=数据。数据读取器(符号、来源、开始日期、结束日期) 新范围=pd.日期范围(start=“2018-1-1”,end=“2019-12-30”) stock=stock.reindex(新范围).fillna
#数据收集和库导入
从U数据读取器导入数据
作为pd进口熊猫
符号='AAPL'
来源='雅虎'
开始日期='2018-01-01'
结束日期='2019-04-24'
股票=数据。数据读取器(符号、来源、开始日期、结束日期)
新范围=pd.日期范围(start=“2018-1-1”,end=“2019-12-30”)
stock=stock.reindex(新范围).fillna(方法='ffill').fillna(方法='bfill'))
股票['Day']=stock.index.weekday\u名称
股票['Month']=stock.index.Month_name()
股票['Size']=股票['High'].适用(λx:如果x>175,则为“大”,否则为“小”)
股票['Other Size']=股票['Low'].适用(λx:如果x>175,则为“大”,否则为“小”)
股票。第二轮(2)
总库(10)
导致
到目前为止我所做的是
stock.groupby(['Day', 'Month']).agg(
{
'High' : [min, 'mean', max],
'Low' : [min, 'mean', max],
'Open' : 'mean',
'Size' : lambda x: x.value_counts().index[0],
# Other_non_numeric : lambda x: x.value_counts().index[1],
# Other_columns : 'mean'
}
).round(2)
导致
问题是:
set(df.columns)
减去您在groupby
中使用的列以及具有特定agg函数的列,例如
从pandas.api.types导入的是\u数值\u数据类型
字段\u groupby=['Day','Month']
字段\u特定={
“高”:[最小值”、“平均值”、“最大值],
“低”:[最小值”、“平均值”、“最大值],
“开放”:“平均值”,
“大小”:lambda x:x.value_counts().索引[0],
}
fields\u other=set(set(stock.columns)-set(fields\u groupby)-set(fields\u specific))
fields_agg_remaining={col:'mean'如果是数字类型(stock[col]),则lambda x:x.value_counts()。字段中col的索引[1]
在这之后,将字段集\u specific
和字段集\u agg\u remaining
组合为agg字段列表
agg\u fields=剩余的字段
聚合字段。更新(特定字段)
stock.groupby(['Day'、'Month']).agg(agg_字段)。四舍五入(2)
编辑:您可以将所有内容组合在一起,将它们放入dictionary参数中,例如:
stock.groupby(['Day','Month']).agg(
{col:
[min',mean',max]如果列在['High','Low']else中
'mean'如果列在['Open']else中
lambda x:x.value_counts().如果列在['Size']else中,则索引[0]
“平均值”如果是数字类型(股票[col])其他
lambda x:x.value_counts().set(set(stock.columns)-{'Day','Month'}中列的索引[1]
).轮(2)
我喜欢将列拆分为两个数据帧的方式。我的问题是,在dictionary参数中是否有任何可能的方法可以做到这一点?是或否,您需要Dict理解来处理dictionary参数中的动态键,请查看我编辑的答案