Erstellen Sie eine neue Wörterbücherspalte, in der sich Schlüssel in einer anderen Spalte mit Listen befinden, und Werte
Posted: 13 Feb 2025, 06:07
Ich versuche, die Spalte "Verwandte Mengen" eines Datenrahmens zu erstellen, das mit dem vorhandenen "Element", "Menge" und "zugehörigen Elementen" Spalten angegeben ist. -table-container ">
< /th>
Element < /th>
Menge < /th>
Verwandte Elemente < /th>
Verwandte Mengen < /th>
< /tr> < /thead>
0 < /td>
Blüten < /td>
< td> 1
['büsche']
{'büsche': 2}
1 < /td>
Büsche < /td>
2 < /td>
[ 'Blumen'] < /td>
{'Blumen': 1} < /td>
< /tr>
2 < /td>
cars < /td>
3 < /td>
['Trucks', 'Motorcycles'] < /td>
{'Trucks': 4, 'Motorcycles': 5} < /td>
< /tr>
3 < /td>
Trucks < /td>
4 < /td>
['Cars', 'Motorcycles'] < /td>
{ 'Cars': 3, 'Motorcycles': 5} < /td>
< /tr>
4 < /td>
Motorräder < /td>
5 < /td>
['Cars', 'Trucks'] < /td>
{'Cars': 3 , 'Trucks': 4}
Die Werte in der Wörterbücher werden als Eingabe einer Funktion verwendet, um eine weitere Spalte später zu generieren. Mit welchem ich die Spalte mit iTerrows () und a für Schleife ausfüllen konnte:
(wobei IDX den entsprechenden Index der einzigen Zeile nach dem Filterung nach 'Element' und verwandt_items_list ist der Wert ist der Wert Aus der Spalte "Verwandte Elemente" der aktuellen Zeile in der Schleife)
, aber ich versuche stattdessen etwas mit df.apply () zu machen in der Hoffnung, dass es leistungsfähiger sein wird. Gibt es eine Möglichkeit, die in Application () auf den gesamten Datenrahmen aufgerufene Funktion anstelle der an sie übergebenen Zeile zugreifen zu können? . Ist der Versuch, Apply () für die Leistung zu verwenden, Zeitverschwendung? Sollte ich nur eine Schleife verwenden, um die "Menge" Daten direkt in die Funktion zu füttern, anstatt diese Spalte überhaupt zu erstellen? Ich mache mir Sorgen, dass dies auch die Leistung verletzen wird
< /th>
Element < /th>
Menge < /th>
Verwandte Elemente < /th>
Verwandte Mengen < /th>
< /tr> < /thead>
0 < /td>
Blüten < /td>
< td> 1
['büsche']
{'büsche': 2}
1 < /td>
Büsche < /td>
2 < /td>
[ 'Blumen'] < /td>
{'Blumen': 1} < /td>
< /tr>
2 < /td>
cars < /td>
3 < /td>
['Trucks', 'Motorcycles'] < /td>
{'Trucks': 4, 'Motorcycles': 5} < /td>
< /tr>
3 < /td>
Trucks < /td>
4 < /td>
['Cars', 'Motorcycles'] < /td>
{ 'Cars': 3, 'Motorcycles': 5} < /td>
< /tr>
4 < /td>
Motorräder < /td>
5 < /td>
['Cars', 'Trucks'] < /td>
{'Cars': 3 , 'Trucks': 4}
Die Werte in der Wörterbücher werden als Eingabe einer Funktion verwendet, um eine weitere Spalte später zu generieren. Mit welchem ich die Spalte mit iTerrows () und a für Schleife ausfüllen konnte:
Code: Select all
dictionary = {item : df.loc[df['Item'] == item,['Quantity']][idx] for item in related_items_list}
, aber ich versuche stattdessen etwas mit df.apply () zu machen in der Hoffnung, dass es leistungsfähiger sein wird. Gibt es eine Möglichkeit, die in Application () auf den gesamten Datenrahmen aufgerufene Funktion anstelle der an sie übergebenen Zeile zugreifen zu können? . Ist der Versuch, Apply () für die Leistung zu verwenden, Zeitverschwendung? Sollte ich nur eine Schleife verwenden, um die "Menge" Daten direkt in die Funktion zu füttern, anstatt diese Spalte überhaupt zu erstellen? Ich mache mir Sorgen, dass dies auch die Leistung verletzen wird