Was ist die schnellste Python -Methode, um eine neue Spalte für die Summe der folgenden zu erstellen: < /p>
In meinem Datenrahmen gibt es unbekannte Anzahl von Spalten, die wie Carbrands_0_Type, carbrands_1_type usw. usw. bezeichnet werden, usw. . In jeder solchen Spalte gibt es nur einen Stringwert, z. "BMW", und es gibt entsprechende Schwimmerwerte, die sich auf den Typwert beziehen. Daher gibt es Spalten, die auch als Carbrands_0_quantity, carbrands_1_quantity usw. bezeichnet werden Ich habe 50 BMW. < /p>
Vorläufig müsste ich den STR -Namen "Audi" erhalten und eine neue Spalte mit dem Namen "Audi" erstellen, wobei die entsprechende Menge für den gesamten Datenrahmen ist. Was ich getan habe, ist Folgendes: < /p>
def convert_sum_type_quantity(row, df, start_string, end_str1, end_str2, character):
total_sum = 0
val = len([x for x in df.columns if (x.startswith(start_string) & x.endswith(end_str1))]) # in this case this is using type for len function
for i in range(val):
qnty_col = start_string + '_' + str(i) + '_' + end_str2
type_col = start_string + '_' + str(i) + '_' + end_str1
if ((isinstance(row[type_col], str)) & (character in str(row[type_col]))):
total_sum += row[qnty_col]
return total_sum
< /code>
Anschließend bewerbe ich mich auf den DataFrame. < /p>
data['audi'] = data.apply(lambda row: convert_sum_type_quantity(row, data, 'carbrands', 'type', 'quantity', 'audi'), axis=1)
< /code>
Es funktioniert, aber es ist schleppend und langsam, da es Lambda verwendet. >
Experten mit guten Ratschlägen? Ich brauche die extra definierten Spalten für die Ausgabe von Nicht-IT-Personen
Schnellster Python -Ansatz, um einen aggregierten Wert zu erhalten ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post