如何将任意函数group-wise应用于Pandas嵌套框架?该函数应该能够一次访问整个组df,就像它是一个完整的Pandas嵌套框架一样。
import pandas as pd
def arbitrary_function(df):
"""This function acts on groups of a df. It can see every row and column of a group df."""
# for example
# making a new column by accessing other columns in the df
df['new_col'] = df['data_col'].sum()
# return the original df with the new column
return df
df = pd.DataFrame([[1, 2], [1, 3], [2, 6], [2, 1]], columns=["group_col", "data_col"])
字符串
组操作前:
df
group_col data_col
0 1 2
1 1 3
2 2 6
3 2 1
# group the dataframe by group_col
# run arbitrary_function() on the df groups
# the first run of arbitrary_function can see one group df as such:
# group_col data_col
# 0 1 2
# 1 1 3
# return to the original data - no more groups
预期产出:
df
group_col data_col new_col
0 1 2 5
1 1 3 5
2 2 6 7
3 2 1 7
型
应做到这一点:
1.没有lambda函数。
1.没有将问题“简化”为可以通过列或元素操作来完成的问题。这个解决方案应该可以推广到你可以在pandas框架上做的任何事情。
1条答案
按热度按时间p5cysglq1#
由于你在函数中返回一个完整的 Dataframe ,你可以简单地
concat
函数的结果,以避免使用groupby_apply
处理额外的索引:字符串
输出量:
型