You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现数据分组后拼接及DataFrame循环追加至空数据集

字符型DataFrame变量遍历与结果追加实现方案

看起来你正在处理全字符型变量的DataFrame,想要遍历每个变量并把分布统计结果汇总到指定结构的空DataFrame里对吧?我来帮你把代码完善并优化,让它能自动适配所有字符型变量:

先看你的原始代码片段:

In [217]: output_nvd = pd.DataFrame(columns=['Variable','Dist_Val','value'])
...: print(output_nvd)
...:
...: #for k in range(0,4):
...: #for k in range(0,len(varlist3)):
...: k=4
...:
...: nvd_var = varlist3[k]
...: print('NVD transform variable: ' + nvd_var)

优化后的完整可运行代码

import pandas as pd

# 初始化空结果数据集,列名匹配需求
output_nvd = pd.DataFrame(columns=['Variable','Dist_Val','value']) 
print("初始空数据集:")
print(output_nvd)

# 自动提取base_varlist3中所有字符型变量的列名列表
# 不用手动指定范围,适配任意数量的字符型变量
varlist3 = base_varlist3.select_dtypes(include=['object']).columns.tolist()

# 遍历每一个字符型变量
for k in range(len(varlist3)):
    current_var = varlist3[k]
    print(f'正在处理变量:{current_var}')
    
    # 获取当前变量的分布统计(这里以值出现次数为例,可按需修改)
    # 如果需要占比,把value_counts()改成value_counts(normalize=True)
    var_dist_stats = base_varlist3[current_var].value_counts().reset_index()
    # 重命名列以匹配output_nvd的结构
    var_dist_stats.columns = ['value', 'Dist_Val']
    # 添加当前变量名称列
    var_dist_stats['Variable'] = current_var
    
    # 将当前变量的统计结果追加到output_nvd中
    # 用pd.concat比循环append效率更高,尤其是数据量大时
    output_nvd = pd.concat([output_nvd, var_dist_stats], ignore_index=True)

# 打印最终汇总结果
print("\n最终汇总数据集:")
print(output_nvd)

关键说明

  • 自动变量提取:用select_dtypes(include=['object'])自动获取所有字符型变量,不用手动写死范围,适配DataFrame结构变化
  • 分布统计灵活调整:默认用value_counts()统计值出现次数,如果需要占比、频率等其他统计量,只需修改这一行参数
  • 高效追加数据:使用pd.concat代替循环append,避免多次创建新对象,提升运行效率,同时ignore_index=True保证索引连续不混乱
  • 替换测试代码:去掉了手动指定k=4的测试行,用完整循环遍历所有变量

内容的提问来源于stack exchange,提问作者Aaraeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:24:12