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

如何为Pandas DataFrame添加字符串行并计算数值列总和?

实现方案拆解

我来一步步帮你搞定这个需求,用Pandas就能轻松实现:

1. 构建目标格式的DataFrame

先创建数值部分的数据,再插入第一行的字符串标签,最后设置好列名:

import pandas as pd

# 初始数值数据
numeric_data = [[4, 2, 4], [1, 6, 2], [5, 8, 6]]
df = pd.DataFrame(numeric_data, columns=['Col1', 'Col2', 'Col3'])

# 在最前面插入字符串行(先加到末尾再重新排序索引)
df.loc[-1] = ['A', 'B', 'C']
df = df.sort_index().reset_index(drop=True)

print(df)

运行后输出的DataFrame就是你要的格式:

Col1 Col2 Col3
0    A    B    C
1    4    2    4
2    1    6    2
3    5    8    6

2. 计算数值行的列总和并追加到末尾

我们需要排除第一行的字符串数据,只对后面的数值行求和,再把结果作为新行加进去:

# 计算数值行(从第2行开始,即iloc[1:])的各列总和,仅计算数值类型
sum_row = df.iloc[1:].sum(numeric_only=True)

# 把总和行转成DataFrame格式,追加到原DataFrame
df = pd.concat([df, sum_row.to_frame().T], ignore_index=True)

print(df)

此时输出会多一行总和:

Col1 Col2 Col3
0    A    B    C
1    4    2    4
2    1    6    2
3    5    8    6
4   10   16   12

3. 创建使用字符串行数据的函数

假设你想用第一行的A/B/C这些字符串做逻辑处理(比如关联列的统计结果、生成自定义报告等),这里写一个示例函数,演示如何调用这些字符串数据:

def process_with_string_labels(df):
    # 获取第一行的字符串标签(也就是你说的loc[0,:])
    string_labels = df.iloc[0].values.tolist()
    # 提取纯数值数据(排除第一行标签和最后一行总和)
    num_df = df.iloc[1:-1]
    
    # 示例逻辑:用字符串标签匹配列,打印每个标签对应的列总和
    for label, col_name in zip(string_labels, num_df.columns):
        col_total = num_df[col_name].sum()
        print(f"标签「{label}」对应列「{col_name}」的总和:{col_total}")

# 调用函数
process_with_string_labels(df)

运行后会输出:

标签「A」对应列「Col1」的总和:10
标签「B」对应列「Col2」的总和:16
标签「C」对应列「Col3」的总和:12

注意事项

  • 插入字符串行后,DataFrame的列类型会变成object(因为混合了字符串和数值),所以求和时一定要加上numeric_only=True,避免报错。
  • 如果你的原始DataFrame已经有列名,直接复用即可,不需要额外设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:32:47