如何解决如何归纳为数据帧中的特定列编写的函数以在任何相似的列上可用?
如何调整此代码,使其可用于数据框中的任何列?目前,它仅适用于名为“空白”的列,但我还有其他10个列需要应用此相同功能。
def get_averages(df: pd.DataFrame,column: str) -> pd.DataFrame:
'''
Add a column in place,with the averages
of each `Num` cyclical item for each row
'''
# work with a new dataframe
df2 = (
df[['FileName','Num',column]]
.explode('Gaps',ignore_index=True)
)
df2.Gaps = df2.Gaps.astype(float)
df2['tag'] = ( # add cyclic tags to each row,within each FileName
df2.groupby('FileName')[column]
.transform('cumcount') # similar to range(len(group))
% df2.Num # get the modulo of the row number within the group
)
# get averages and collect into lists
df2 = df2.groupby(['FileName','tag'])[column].mean() # get average
df2.rename(f'{column}_avgs',inplace=True)
# collect in a list by Filename and merge with original df
df2 = df2.groupby('FileName').agg(list)
df = df.merge(df2,on='FileName')
return df
df = get_averages(df,'Gaps')
解决方法
使用参数变量而不是对列名进行硬编码:
df2 = (
df[['FileName','Num',column]]
.explode(column,ignore_index=True)
)
df2[column] = df2[column].astype(float)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。