Ich habe einen Datenrahmen mit 3 Spalten und mehr als 1.000 Zeilen,Wie kann man einen DataFrame unter Verwendung der for-Schleife in Python unterteilen und auflisten?
df
day product order
2010-01-01 150ml Mask 9
2010-01-02 230ml Lotion 27
2010-01-03 600ml Shampoo 33
Und ich möchte jedes Produkt, wie folgend der Teilmenge,
df_mask df_lotion df_shampoo
day order day order day order
2010-01-01 9 2010-01-02 27 2010-01-03 33
2010-01-09 8 2010-01-05 30 2010-01-04 25
2010-01-11 13 2010-01-06 29 2010-01-06 46
Dies ist, wie ich es tun,
# Create a product list
productName = df['product'].tolist()
# Subsetting
def subtable(df,productName):
return (df[(df['product'] == productName)])
# Subsetting
df_mask = subtable(df, '150ml Mask')
df_lotion = subtable(df, '230ml Lotion')
df_shampoo = subtable(df, '230ml Shampoo')
Gibt es eine Möglichkeit, alle Subsets einmal mit for-Schleife zu bekommen, da der Datenrahmen viele verschiedene Produkte hat.
Vielen Dank für Ihre Antwort. Ich habe 'df [" product "] = df [" Produkt "]. Str.split (expand = True) [1]' versucht, aber einige Produktnamen sind nicht organisiert, da einige Produktnamen wie '0.7OZ Mask UK 6' aussehen . Gibt es einen anderen Weg, das Problem zu beheben? – Peggy
@peggy Was sind die möglichen Variationen der Produktetiketten? Die vollständige Extraktion des Produktnamens hängt von Ihren Eingabedaten ab. Allerdings sollte 'df [" product "]. Str.split (expand = True) [1]' für Ihr angegebenes Beispiel in Ihrem Kommentar * Mask * erfolgreich aus '0.7OZ Mask UK 6' extrahieren. Oder brauchst du * Mask * inklusive * UK 6 *? – pansen
Ja. Ich werde _Mask UK 6_ brauchen. Aber ich beschloss, jedem Produkt eine bestimmte Nummer zuzuweisen, um das Sortieren zu erleichtern. Ansonsten laufen die Codes ziemlich gut. Vielen Dank! – Peggy