如何修改pandas自定义函数实现自动遍历DataFrame所有列批量计算
修改后的完整函数
def match_function(df): # 遍历DataFrame所有列 for column in df.columns: # 仅处理字符串类型列,避免非字符串列调用str方法报错 if df[column].dtype == object: df_1 = df[column].str.split(',', expand=True) df_11 = df_1.apply(lambda s: s.value_counts(), axis=1).fillna(0) # 保留原有计算逻辑不变 match = df_11.iloc[:, 0][0]/df_11.sum(axis=1)*100 df[column] = match # 可根据需要选择返回处理后的df,或单独提取计算结果 return df
核心调整点
- 取消原函数的列名入参,改为直接接收
DataFrame作为入参,修正了原函数依赖全局变量的不规范写法 - 新增全列遍历逻辑,自动逐列执行原有计算规则
- 新增字符串类型列判断,避免非字符串格式的列执行
str.split时报错
使用方法
直接把需要处理的DataFrame作为参数传入即可,示例:
# 假设你要处理的DataFrame名为your_df processed_df = match_function(your_df)
补充说明
如果你的列中存在可转为字符串的内容需要处理,可删除类型判断,统一把列内容转字符串后再执行后续逻辑,修改对应行即可:
df_1 = df[column].astype(str).str.split(',', expand=True)
内容的提问来源于stack exchange,提问作者Archi
相关产品推荐
相关产品推荐

