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

无法向列表末尾追加元素并正确拼接DataFrame的问题排查

问题分析与解决

问题根源

你遇到的顺序错位问题,核心原因是DataFrame的列遍历顺序是按照列在原数据框中的实际存储顺序来的。如果你的column2在column1和date_column之前,循环时会先执行column2对应的代码块,把三个统计值提前塞进stats列表开头,后续再添加column1和日期的统计值,自然就和descs的顺序对应不上了。

另外你输出里出现的[454]这类列表格式,是因为用agg({column:"mean"})返回的是Series对象,不是单个数值,需要改成直接取均值的写法。

修复后的代码

直接按你需要的统计顺序主动获取数据,不依赖列的遍历顺序,就能保证stats的顺序和descs完全匹配:

import pandas as pd

descs = ["a", "b", "c", "d", "e", "f", "g"]
data = [{"Description": desc} for desc in descs]
stats = []

# 处理column1的三个统计项(对应a、b、c)
counts = df["column1"].value_counts()
stats.extend([
    counts.sum(),
    counts[True],
    counts[False]
])

# 处理date_column的统计项(对应d)
stats.append(df["date_column"].min().date())

# 处理column2的三个统计项(对应e、f、g)
col2_max = df["column2"].max()
# 直接用mean()获取单个数值,避免返回Series
col2_mean_true = round(df.loc[df["column1"] == True, "column2"].mean(), 2)
col2_mean_false = round(df.loc[df["column1"] == False, "column2"].mean(), 2)
stats.extend([col2_max, col2_mean_true, col2_mean_false])

# 拼接结果
result_df = pd.concat([pd.DataFrame(data), pd.DataFrame({"Statistic": stats})], axis=1)

效果说明

修复后,stats列表的顺序会严格对应descs的a→b→c→d→e→f→g,拼接后的DataFrame中,column2的三个统计值会准确填充到原来的NaN位置,同时也解决了输出中出现嵌套列表的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:55:15