Mam następujące Dataframe wygląda jak na poniższym obrazku:
Muszę dodać jeszcze jedną kolumnę "Key" do istniejącej ramki danych, tak jak wygląda ona w ramce danych poniżej:
Czy istnieje sposób na utworzenie kolumny "Klucz" opartej na kolumnach Field i Seq
Odpowiedzi:
0 dla odpowiedzi № 1Tutaj 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
zNone
, a następnie użyjffill()
wypełnićNone
wartości. - Zaktualizuj kolumnę "klucz" tylko tam, gdzie "Pole" i "klucz" są źle ustawione.