Powiedz, że mam 3 słowniki o tej samej długości, które łączę w unikalną ramkę danych pandas
. Następnie zrzucam wspomnianą ramkę danych do pliku Excel. Przykład:Pandy: cięcie ramki danych na wiele arkuszy tego samego arkusza kalkulacyjnego
import pandas as pd
from itertools import izip_longest
d1={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
d2={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
d3={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
dict_list=[d1,d2,d3]
stats_matrix=[ tuple('dict{}'.format(i+1) for i in range(len(dict_list))) ] + list(izip_longest(*([ v for k,v in sorted(d.items())] for d in dict_list)))
stats_matrix.pop(0)
mydf=pd.DataFrame(stats_matrix,index=None)
mydf.columns = ['d1','d2','d3']
writer = pd.ExcelWriter('myfile.xlsx', engine='xlsxwriter')
mydf.to_excel(writer, sheet_name='sole')
writer.save()
Kod ten tworzy plik Excel z wyjątkowy arkusza:
>Sheet1<
d1 d2 d3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
Moje pytanie: jak mogę kroić tę dataframe w taki sposób, że wynikowy plik Excel powiedzmy 3 arkusze, w których nagłówki są powtarzane, aw każdym arkuszu są dwa wiersze wartości?
EDIT
W przykładzie przedstawionym tutaj na dicts mieć 6 elementów każdy. W moim prawdziwym przypadku mają one 25000, indeks frameworka danych zaczynając od 1
. Tak więc chcę podzielić tę ramkę danych na 25 różnych pod-plasterków, z których każdy jest zrzucany do dedykowanego arkusza Excela tego samego głównego pliku.
Zamierzony wynik: jeden plik Excel z wielu arkuszy. Nagłówki są powtarzane.
>Sheet1< >Sheet2< >Sheet3<
d1 d2 d3 d1 d2 d3 d1 d2 d3
1 1 1 3 3 3 5 5 5
2 2 2 4 4 4 6 6 6
Co 'SHEET_NAME = 'super _ {}'. format (arkusz) 'zrobić? Tak, nazywa arkusze, ale jak? – FaCoffee
Ponadto, ponieważ 'mydf.index' zaczyna się od' 1', jak zrobić, aby zacząć od '0'? – FaCoffee
@ CF84 to formatowanie ciągów znaków. Zrobiłem "supe_" i mogłem być wszystkim, co wybierzesz. '{}' jest tam z '.format (arkusz)', gdzie wartość w 'arkuszu' zostaje umieszczona tam, gdzie' {} 'znajdował się w ciągu znaków. Będziesz więc sprawdzał wartości '[0, 1, 2]' i ''super _ {}'. Format (arkusz)' oceni na ''super_0'''' super_1'' i '' super_2' '. Wymień go według własnego uznania. – piRSquared