• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Python - Tablica obiektów dla pandas

Object Storage Arubacloud
0 głosów
419 wizyt
pytanie zadane 28 marca 2021 w Python przez PIxEL Nowicjusz (180 p.)
zamknięte 1 kwietnia 2021 przez PIxEL

Cześć,

Mam taki problem. Mam zrobioną pętlę, która generuje mi dane o typie pandas.dataframe. Zmienne są generowane dynamicznie i ładują się w string. Zatem czy jest jakaś możliwość, żeby załadować zmienne dataframe do jakiejś tablicy, a potem w tym samym "formacie" je wypakować? Na upartego mógłbym zrobić string -> dataframe, ale to z kolei angażuje stworzenie nowego dataframe, a string dodatkowo troche przekształca otrzymane dane.

 

wygląda to mniej więcej tak:

sheets = ["Arkusz1", "Arkusz2"]
k = len(sheets)
y = None
y = pandas.core.frame.DataFrame(y)
test = []

for i in range(k):
    for sheet in sheets:
        excel = pandas.read_excel(path, sheet_name=sheet)
        df = pandas.DataFrame(excel)
        df[date] = pandas.to_datatime(df[date])    # date to nazwa kolumny w excelu

        mask = (df[date] >= day1) & (df[date] <= day)
        df = df.loc[mask]
        y = y.append(df)  # tutaj caly czas jest typ dataframe
    
        test.append(f"{df}") # tutaj już powstaje string

I teraz kwestia jest taka, że potrzebuje kilka zmiennych (nie wiem ile, bo to zalezy od liczby wpisów w sheets, który przychodzi z ConfigParser) a potem w tej samej formie je wypakować do typu dataframe, żeby potem zrobić dataframe.to_html()

 

Tam jest dodatkowa pętla for i in range(k): - bo był pomysł, żeby to ładować w jakiś inny sposób x[i] = df, ale to nie przeszło, ale już zostawiłem to tak jak napisałem wyżej.

komentarz zamknięcia: rozwiązane
komentarz 28 marca 2021 przez adrian17 Ekspert (344,860 p.)

Nie ukrywam że zupełnie nie rozumiem co chcesz zrobić.

y = y.append(df)

tutaj sklejasz wyniki w jeden dataframe

test.append(f"{df}")

Tutaj masz tablicę stringów, co raczej nie ma sensu

test.append(df)

A to by była tablica frame'ów.

Ale nijak z tego nie mogę wywnioskować, po co w ogóle to robisz i jaką i czego tablicę koniec końców potrzebujesz.

komentarz 28 marca 2021 przez PIxEL Nowicjusz (180 p.)

Chodziło mi o to, aby każdy DataFrame z arkusza był w osobnej zmiennej (bo gdy był w jednej, to tabelka rozrastała się do gigantycznych rozmiarów). Jak robiłem tak jak zrobiłeś, nie do końca to działało, gdy chciałem to przenieść między metodami.
Czyli potrzebowałem konwersji: DataFrame -> String -> DataFrame

Odnosząc się do twojego pierwszego zapytania czemu sklejam wyniki do jednego df?
Otóż cel był taki, aby ze wszystkich arkuszy wyciągnąć tylko jedną kolumnę, która wszędzie nazywa się tak samo, a potem na jej podstawie zrobić porównanie. W moim przypadku to było excel = y[date] i tak oto miałem zbiór wszystkich dat ze wszystkich arkuszy od->do w jednym df i na jego podstawie robiłem porównanie w ifach. 

Po wielu walkach znalazłem pewne obejście - na pewno nie jest ono idealne, ale działa. 
Wystarczy wygenerować DataFrame do csv czyli np,  x.to_csv(index=False) a potem już tylko zrobić .replace na usunięcie średnika, czy tam przecinka, a następnie utworzyć z niego nowy DataFrame - y = pandas.read_csv(x, sep=",").

Podobne pytania

0 głosów
1 odpowiedź 410 wizyt
0 głosów
1 odpowiedź 1,213 wizyt
pytanie zadane 22 czerwca 2019 w Python przez 001greg001 Bywalec (2,030 p.)
0 głosów
0 odpowiedzi 925 wizyt
pytanie zadane 27 lutego 2019 w Python przez Dawid89 Obywatel (1,100 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...