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

Pandas DataFrame设置列名后数据全部丢失的原因是什么

问题原因

你两次调用pd.DataFrame时传入的数据源和列名匹配逻辑冲突,导致空值生成:

  1. 执行pd.concat([MIN, MAX, RANGE, MEAN, MED], axis=1)后,你得到的已经是一个列名为[0,1,2,3,4]的DataFrame
  2. 当你再次调用pd.DataFrame(data=sum_stats, columns=columns)时,Pandas会优先匹配传入数据源的现有列名,你指定的['MIN', 'MAX', 'RANGE', 'MEAN', 'MED']和原有列名0-4完全不匹配,Pandas就会生成所有列均为NaN的空DataFrame。

正确解决方法

有两种简单的修改方案,都不需要重复调用pd.DataFrame:

方案1:concat时直接指定列名

在concat环节通过keys参数直接设置列名,一步完成:

MIN = df.min(axis=0, numeric_only=True)
MAX = df.max(axis=0, numeric_only=True)
RANGE = MAX-MIN
MEAN = df.mean(axis=0, numeric_only=True)
MED = df.median(axis=0, numeric_only=True)

sum_stats = pd.concat([MIN, MAX, RANGE, MEAN, MED], axis=1, keys=['MIN', 'MAX', 'RANGE', 'MEAN', 'MED'])
sum_stats

方案2:直接修改现有DataFrame的列属性

如果已经完成concat操作,直接修改columns属性即可:

sum_stats = pd.concat([MIN, MAX, RANGE, MEAN, MED], axis=1)
sum_stats.columns = ['MIN', 'MAX', 'RANGE', 'MEAN', 'MED']
sum_stats

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:54:07