Ho un DataFrame panda, df_test
. Contiene una "dimensione" della colonna che rappresenta le dimensioni in byte. Ho calcolato KB, MB e GB utilizzando il seguente codice:Restituisce più colonne da applicare i panda
df_test = pd.DataFrame([
{'dir': '/Users/uname1', 'size': 994933},
{'dir': '/Users/uname2', 'size': 109338711},
])
df_test['size_kb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x/1024.0, grouping=True) + ' KB')
df_test['size_mb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x/1024.0 ** 2, grouping=True) + ' MB')
df_test['size_gb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x/1024.0 ** 3, grouping=True) + ' GB')
df_test
dir size size_kb size_mb size_gb
0 /Users/uname1 994933 971.6 KB 0.9 MB 0.0 GB
1 /Users/uname2 109338711 106,776.1 KB 104.3 MB 0.1 GB
[2 rows x 5 columns]
Ho eseguito questo oltre 120.000 file e il tempo necessario circa 2,97 secondi per colonna * 3 = ~ 9 secondi in base alla% timeit.
C'è comunque posso farlo più veloce? Per esempio, posso invece restituire una colonna alla volta da applicare ed eseguirla 3 volte, posso restituire tutte e tre le colonne in un unico passaggio per inserirle di nuovo nel dataframe originale?
Le altre domande che ho trovato tutte vogliono prendere più valori e restituire un singolo valore. Voglio prendere un singolo valore e restituire più colonne.
Sono sorpreso che abbia trascorso quasi 2 anni senza la risposta giusta. Stavo cercando qualcos'altro e sono inciampato su questo. Spero che non sia troppo tardi per essere utile! – Nelz11