Jak stworzyć nową kolumnę w oparciu o wartości w innych kolumnach (Pandas)

0

Hej, poniższy kod najszybciej opisuje co chce zrobic:

import pandas as pd
df = pd.DataFrame({"Type": [["1", "1", "2", "3"], ["2","3"]], "Name": [["A", "B", "C", "D"], ["E", "F"]]})

unique = list(set(df["Type"].explode()))
for t in unique:
    df[t] = None
    df[t] = df[t].astype('object')

for idx, row in df.iterrows():
    for t in unique:
        df.at[idx, t] = [row["Name"][i] for i in range(len(row["Name"])) if row["Type"][i] == t]

Czyli wartosci w kolumnach Type i Name sa listami o tej samej liczebnosci i tworza pary (Type, Name). W oparciu o te pary chce stworzyc nowe kolumny ktorych nazwy to typy z kolumny Type a wartosci to lista wartosci z kolumny Name dla danego typu. Niestety obecny kod dziala bardzo wolno. Jak moge go przyspieszyc?

0

@Templar Crusader: sorki byl blad w kodzie, teraz powinno dzialac

0
Kokos123 napisał(a):

@Templar Crusader: sorki byl blad w kodzie, teraz powinno dzialac

Ok teraz poprawione na 100%! Sorki :(

0

Czyli sposób Platona.
On się skarżył że ma bardzo głupich uczniów:- Jeden raz tłumaczysz - nie rozumieją, drugi raz tłumaczysz - nie rozumieją, trzeci raz tłumaczysz, sam zaczynasz rozumieć a oni wciąż nie rozumieją!

0

O ile dobrze rozumiem, docelowo column names = Type, Name, 1, 1, 2, 3, 2, 3, ... , n? Na ten moment, df generowany jest, jak poniżej. Może lepiej wstawić do tych lists bardziej unikalne values lub strings bo obecnie to można dostać oczopląsu.

Ile values docelowo ma mieć ten df?

Screenshot 2022-06-26 at 09.07.19.png

0
Templar Crusader napisał(a):

O ile dobrze rozumiem, docelowo index 0 = Type, Name, 1, 1, 2, 3, 2, 3, ... , n? Na ten moment, df generowany jest, jak poniżej. Może lepiej wstawić do tych lists bardziej unikalne values lub strings bo obecnie to można dostać oczopląsu.

Ile values docelowo ma mieć ten df?

Screenshot 2022-06-26 at 09.07.19.png

Dokladnie o taki wynik chodzi, moglbys pokazac kod zebym mogl porownac czy dziala szybciej niz ten moj?

0

@Templar Crusader: U mnie ten kod dziala. DataFrame ma okolo 1mln wierszy, gdzie wartosci w kolumnach Type i Name to listy po max 10 elementow (rozna ilosc w zaleznosci od wiersza). Wszystkich Typow jest okolo 10 wiec kolumn do dodania do DataFrame bedzie okolo 10.

0

@Templar Crusader: tak tyko unikalne wartosci z Type. Wartosci w listach w Type jak i Name to zawsze stringi. Moja miniwersja idealnie opisuje moje dane tylko mam 1mln takich wierszy zamiast dwoch.

1 użytkowników online, w tym zalogowanych: 0, gości: 1