/ / Dodawanie kolumny w ramkach danych w Pandach przy użyciu danych w istniejącej ramce danych - python, panda, ramka danych

Dodawanie kolumny w ramkach danych w Pandach przy użyciu danych w istniejącej ramce danych - python, panda, ramka danych

Mam następujące Dataframe wygląda jak na poniższym obrazku:

obraz

Muszę dodać jeszcze jedną kolumnę "Key" do istniejącej ramki danych, tak jak wygląda ona w ramce danych poniżej:

obraz

Czy istnieje sposób na utworzenie kolumny "Klucz" opartej na kolumnach Field i Seq

Odpowiedzi:

0 dla odpowiedzi № 1

Tutaj jest jedno rozwiązanie.

import pandas as pd

df = pd.DataFrame({"Field": ["Indicator", "A", "B", "Code", "1", "2", "3", "Name", "Address"],
"Count": [26785, 785, 26000, 12345, 45, 300, 12000, 12312, 1212],
"Seq": [1.0, 1.1, 1.1, 2.0, 2.1, 2.1, 2.1, 3.0, 4.0]})

sep = df.loc[df["Seq"].apply(lambda x: x == int(x)), "Field"].tolist()

df["key"] = pd.Series(np.where(~df["Field"].isin(sep), None, df["Field"])).ffill()
df.loc[df["Field"] != df["key"], "key"] += "+" + df["Field"]

#    Count      Field  Seq          key
# 0  26785  Indicator  1.0    Indicator
# 1    785          A  1.1  Indicator+A
# 2  26000          B  1.1  Indicator+B
# 3  12345       Code  2.0         Code
# 4     45          1  2.1       Code+1
# 5    300          2  2.1       Code+2
# 6  12000          3  2.1       Code+3
# 7  12312       Name  3.0         Name
# 8   1212    Address  4.0      Address

Wyjaśnienie

  • Dodaj kolumnę "klucz" i zastąp wartości, które nie występują sep z None, a następnie użyj ffill() wypełnić None wartości.
  • Zaktualizuj kolumnę "klucz" tylko tam, gdzie "Pole" i "klucz" są źle ustawione.