Как получить выходные файлы, помеченные ключами словаря - PullRequest
0 голосов
/ 01 ноября 2018

Я пользователь 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, ключи = [ "Цена"]) но это не сработало. Кажется,% s не так.

В идеале я хочу, чтобы выходные файлы назывались «Output_A.txt», «Output_B.txt» ... Если бы вы могли мне помочь, я был бы очень благодарен за это.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Пара баллов:

  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'])
0 голосов
/ 01 ноября 2018

Перебирая столбцы, вы получите результат.

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

Ссылка: Панды: перебирать столбцы и начинать с одного столбца

Примечание: еще не проверял это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...