• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
665 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 Mentor (352,580 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ź 538 wizyt
0 głosów
1 odpowiedź 1,362 wizyt
pytanie zadane 22 czerwca 2019 w Python przez 001greg001 Bywalec (2,030 p.)
0 głosów
0 odpowiedzi 1,000 wizyt
pytanie zadane 27 lutego 2019 w Python przez Dawid89 Obywatel (1,210 p.)

93,327 zapytań

142,323 odpowiedzi

322,396 komentarzy

62,656 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...