有没有办法像 DataFrameGroupBy.agg 函数那样将函数列表应用于 DataFrame 中的每一列?我发现了一个丑陋的方法来做到这一点:
df=pd.DataFrame(dict(one=np.random.uniform(0,10,100), two=np.random.uniform(0,10,100)))
df.groupby(np.ones(len(df))).agg(['mean','std'])
one two
mean std mean std
1 4.802849 2.729528 5.487576 2.890371
对于 Pandas 0.20.0 或更高版本,请使用df.agg https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.agg.html(感谢 ayhan 的指出这一点 https://stackoverflow.com/questions/22128218/pandas-how-to-apply-multiple-functions-to-dataframe/22128316?noredirect=1#comment85010010_22128316):
In [11]: df.agg(['mean', 'std'])
Out[11]:
one two
mean 5.147471 4.964100
std 2.971106 2.753578
对于旧版本,您可以使用
In [61]: df.groupby(lambda idx: 0).agg(['mean','std'])
Out[61]:
one two
mean std mean std
0 5.147471 2.971106 4.9641 2.753578
另一种方法是:
In [68]: pd.DataFrame({col: [getattr(df[col], func)() for func in ('mean', 'std')] for col in df}, index=('mean', 'std'))
Out[68]:
one two
mean 5.147471 4.964100
std 2.971106 2.753578
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)