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

如何在Python Pandas中将函数结果存入字典并生成指定DataFrame

问题:如何让DataFrame的列显示函数执行结果而非函数对象?

我编写了两个读取CSV文件并执行校验的函数:

  • 统计该CSV文件的行数
  • 统计ID列存在空值的行数

我希望生成如下结构的DataFrame:

ChecksSummaryFindings
Check #1Number of records on fileNumber of records on file: 10
Check #2Number of records missing an IDNumber of records missing an ID: 2

现有函数代码:

函数1(统计行数)

def function1():
    with open('data.csv') as file:
        record_number = len(list(file))
        print("Number of records on file:",record_number)
function1()

输出:Number of records on file: 10

函数2(统计ID列空值行数)

import pandas as pd

def function2():
    df = pd.read_csv('data.csv', low_memory=False)
    missing_id = df["IDs"].isna().sum()
    print("Number of records missing an ID:", missing_id)
function2()

输出:Number of records missing an ID: 2

我尝试通过字典生成DataFrame:

table = {
   'Checks' : ['Check #1', 'Check #2'],
    'Summary' : ['Number of records on file', 'Number of records missing an ID'],
    'Findings' : [function1, function2]
}
df = pd.DataFrame(table)
df

但生成的DataFrame中Findings列显示的是函数对象,请问如何让该列显示函数的实际输出结果?


解决方案

问题出在两个核心点:一是你的函数仅通过print输出结果,没有返回值;二是你在字典中传入的是函数对象而非函数执行后的结果。按以下步骤修改即可:

1. 修改函数,让其返回结果字符串

调整两个函数,在print的同时返回格式化后的结果字符串,这样调用函数时能直接获取到需要的内容:

# 修改后的function1
def function1():
    with open('data.csv') as file:
        record_number = len(list(file))
        result = f"Number of records on file: {record_number}"
        print(result)
        return result

# 修改后的function2
import pandas as pd

def function2():
    df = pd.read_csv('data.csv', low_memory=False)
    missing_id = df["IDs"].isna().sum()
    result = f"Number of records missing an ID: {missing_id}"
    print(result)
    return result

2. 调用函数获取结果后生成DataFrame

在字典的Findings列表中,传入函数调用的结果(即加括号function1()、function2()),而非函数本身:

table = {
   'Checks' : ['Check #1', 'Check #2'],
    'Summary' : ['Number of records on file', 'Number of records missing an ID'],
    'Findings' : [function1(), function2()]
}
df = pd.DataFrame(table)
print(df)

执行后,Findings列就会显示函数实际输出的结果字符串,完全符合你想要的DataFrame结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:35:29