首页 > 解决方案 > 如何获取标有字典键的输出文件

问题描述

我是 python/pandas 用户,我有一个像 df1、df2、df3 这样的多个数据框......我想将它们命名为 A、B、C ......因此我写如下。

df_dict = {"A":df1, "B":df2,'C':df3,....}

每个数据框都有“价格”列,我想知道以下公式的输出。

frequency=df.groupby("Price").size()/len(df)

我做了以下定义,并希望从每个数据帧中获取输出。

def Price_frequency(df,keys=["Price"]):
    frequency=df.groupby(keys).size()/len(df)
    return frequency.reset_index().to_csv("Output_%s.txt" %(df),sep='\t')

作为第一次试验,我做了 Price_frequency(df1,keys=["Price"]) 但这没有用。%s 似乎是错误的。

理想情况下,我想要名为“Output_A.txt”、“Output_B.txt”的输出文件......如果你能帮助我,我将非常感激。

标签: pythonpandas

解决方案


几点:

  1. %s要求您输入一个字符串。但在 Python 3.6+ 中,您可以使用格式化的字符串文字,您可能会发现它更具可读性。
  2. 您的函数不需要在这里返回任何内容。您正在使用它循环输出 csv 文件。return如果没有达到目的,不要觉得有必要添加声明。

因此,您可以执行以下操作:

def price_frequency(df_dict, df_name, keys=['Price']):
    frequency = df_dict[df_name].groupby(keys).size() / len(df_dict[df_name].index)
    frequency.reset_index().to_csv(f'Output_{df_name}.txt', sep='\t')

df_dict = {'A': df1, 'B': df2, 'C': df3}

for df_name in df:
    price_frequency(df_dict, df_name, keys=['Price'])

推荐阅读