我正在尝试使用pandas聚合整个数据帧,而不按任何内容进行分组。你知道吗
我确实需要为不同的列使用不同的函数,因此我使用字典,但是传递'first'或'last'作为聚合函数会抛出一个值错误:没有结果,而其他函数如'min'/'max'/'mean'则没有问题。你知道吗
这是代码的简化。你知道吗
df = pd.DataFrame({'Col1':[1,2,3,4], 'Col2':[5,6,7,8], 'Col3':[9,10,11,12]})
func = {col: ['first', 'last'] if col in ['Col1']
else ['first', 'last', 'mean'] if col in ['Col2']
else 'mean' for col in df.columns}
result = df.agg(func)
使用
result = df.groupby(lambda _ : True).agg(func)
做的工作,但相当慢,我想由于群比。 数据帧已经是无法进一步分组的较大数据帧的子集。你知道吗
我有成百上千的列,无法单独聚合它们。你知道吗
是否有其他方法可以比分组更快/更有效地获取第一行和最后一行以及不同的聚合?你知道吗
对于这样的示例数据帧
Col1 Col2 Col3
0 1 5 9
1 2 6 10
2 3 7 11
3 4 8 12
输出应该是
Col1 Col2 Col3
first last first last mean mean
True 1 4 5 8 6.5 10.5
Edit:与原始groupby函数一样,不应删除空值/列。你知道吗
更新:
输出:
让我们看看在不使用groupby的情况下使用自定义函数是否会有所帮助:
相关问题 更多 >
编程相关推荐