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
相关产品推荐
相关产品推荐

