экспорт группового элемента / списка с условием IF в таблицу Excel - PullRequest
0 голосов
/ 14 марта 2019

Я хотел бы проверить «рабочий лист», если он содержит более, например, 250 записей, если это так, я бы создал новый лист Excel и сохранил бы его в новом файле.

Например:

Leading-Zip:   Adresses that contains the Leading-Zip:
--------------------------

74                  400
73                  200   
72                   50

Я использовал эту команду, чтобы получить количество записей, которые я хочу сгруппировать:

worksheet['Zip-code-region'].value_counts()

Какой способ выбрать для этого?Должен ли я создать список?или можно использовать команду с циклом for?

Попробуйте обновление: я импортирую файл Excelfile:

xel = pd.read_excel(r'C:test.xlsx', sheet_name = None)

, чем я выбираю лист:

worksheet = xel[ws]

теперь я добавляю новый столбец 'руководящий-zip', разрезая почтовый индекс:

worksheet['leading-zip']=worksheet['zip-code'].astype(str).str[:2].astype(int)

из этого "ведущего-почтовый индекс". Я хочу перебрать каждый "ведущий-почтовый индекс" - подсчитать адреса, содержащиеся ви если их больше 250, я хочу создать новый файл Excel.

1 Ответ

1 голос
/ 14 марта 2019

Вы можете отфильтровать результаты value_counts, которые превышают пороговое значение, а затем выполнить цикл по их индексам, сохранив соответствующие подмножества из исходного DataFrame в виде отдельных листов Excel:

import xlsxwriter
import numpy as np
import pandas as pd

df = pd.DataFrame({'zip': np.random.randint(10, 100, 1000)})

z = df['zip'].value_counts()

threshold = 15

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
for i in z[z >= threshold].index:
    df[df['zip'] == i].to_excel(writer, str(i))

# save the remaining data as worksheet 'other':
df[df['zip'].isin(z[z < threshold].index)].to_excel(writer, 'other')

writer.save()
...