De retour de plusieurs colonnes d'appliquer les pandas

J'ai une pandas DataFrame, df_test. Il contient une colonne "taille" qui représente la taille en octets. J'ai calculé KO, MO et GO en utilisant le code suivant:

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]

J'ai fait ce plus de 120 000 lignes et des fois, il faut environ 2.97 secondes par colonne * 3 = ~9 secondes selon %timeit.

Est-il de toute façon je peux faire ce plus rapide? Par exemple, je peux au lieu de retourner une colonne à la fois d'appliquer et d'exécuter 3 fois, puis-je retourner tous les trois colonnes en une seule passe pour insérer de nouveau dans l'original dataframe?

Les autres questions que j'ai trouvé a tous envie de prendre plusieurs valeurs et retourner une seule valeur. Je veux prendre qu'une seule valeur et retourner plusieurs colonnes.

InformationsquelleAutor PaulMest | 2014-05-10