如何获取带有字典键标签的输出文件

时间:2018-10-31 22:59:12

标签: python pandas

我是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” ... 如果您能帮助我,我将非常感谢。

2 个答案:

答案 0 :(得分:1)

几点:

  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'])

答案 1 :(得分:0)

遍历列将获得输出。

def Price_frequency(df):
    for col in df.columns[2:]
        frequency=df.groupby(col).size()/len(df)

    return frequency.reset_index().to_csv("Output_%s.txt" %(col),sep='\t')

参考:Pandas: Iterate through columns and starting at one column

注意:还没有测试这个问题