Pandas - записывает несколько фреймов данных на один лист Excel - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть датафрейм с 45 столбцами и 1000 строк.Мое требование состоит в том, чтобы создать один лист Excel с двумя верхними значениями каждого столбца и их процентами (предположим, что в столбце 1 значение «python» присутствует 500 раз, процент должен быть 50)

Я использовал:

    writer = pd.ExcelWriter('abc.xlsx')
    df = pd.read_sql('select * from table limit 1000', <db connection sring>)
    column_list = df.columns.tolist()
    df.fillna("NULL", inplace = True)
    for obj in column_list:
        df1 = pd.DataFrame(df[obj].value_counts().nlargest(2)).to_excel(writer,sheet_name=obj
writer.save()

Это записывает вывод в отдельных вкладках Excel одного и того же документа.Они нужны мне на одном листе в следующем формате:

Column Name          Value         Percentage
col1                 abc           50
col1                 def           30
col2                 123           40
col2                 456           30

....

Дайте мне знать о других функциях, чтобы получить этот вывод.

1 Ответ

0 голосов
/ 08 февраля 2019

Первое, что бросается в глаза, это то, что вы каждый раз меняете имя листа, говоря: «1001 * Если вы избавитесь от этого, это само по себе может решить вашу проблему.

Если нет, я бы предложил объединить результаты в один большой DataFrame, а затем записать этот DataFrame в Excel.

for obj in column_list:
    df = pd.DataFrame(df[obj].value_counts().nlargest(2))
    if df_master is None:
        df_master = df
    else:
        df_master = pd.concat([df_master,df])
df_master.to_excel("abc.xlsx")

Вот более подробная информация о суммировании / объединении кадров данных в Pandas https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

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