python - 如何获取标有字典键的输出文件
问题描述
我是 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”的输出文件......如果你能帮助我,我将非常感激。
解决方案
几点:
%s
要求您输入一个字符串。但在 Python 3.6+ 中,您可以使用格式化的字符串文字,您可能会发现它更具可读性。- 您的函数不需要在这里返回任何内容。您正在使用它循环输出 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'])