我们可以通过这种方式使用分组依据吗?

时间:2020-02-29 08:56:27

标签: pandas pandas-groupby

我有一个包含100多个列的df,我想使用groupby并取其中包含“ WR”和“ sum”的列的平均值,如果不使用agg()的话。

df.groupby([c1,c2]).agg({ {i for i in df.columns if 'WR' in i}:'mean', {i for i in df.columns if 'WR' 
not in i}:'sum'})

有可能吗?

2 个答案:

答案 0 :(得分:1)

通过dict.fromkeysmerge一起创建字典:

d1 = dict.fromkeys([i for i in df.columns if 'WR' in i], 'mean')
d2 = dict.fromkeys([i for i in df.columns if 'WR' not in i], 'sum')

df.groupby([c1,c2]).agg({**d1, **d2})

另一个类似的解决方案:

m = df.columns.str.contains('WR')

d1 = dict.fromkeys(df.columns[m], 'mean')
d2 = dict.fromkeys(df.columns[~m], 'sum')

df.groupby([c1,c2]).agg({**d1, **d2})

答案 1 :(得分:-1)

import pandas as pd

d1 = dict.fromkeys([如果WR in i,则i在df.columns中为i],“平均值”) d2 = dict.fromkeys([如果WR不在i中,则i在df.columns中为i],'sum') df.groupby([c1,c2]),agg({** d1,** d2})

相关问题