Ho un frame dati panda con due colonne. Ho bisogno di cambiare i valori della prima colonna senza influenzare la seconda e recuperare l'intero frame di dati con i soli valori della prima colonna modificati. Come posso farlo usando apply in panda?Panda: come posso utilizzare la funzione apply() per una singola colonna?
risposta
Dato un campione dataframe df
come:
a,b
1,2
2,3
3,4
4,5
quello che vuoi è:
df['a'] = df['a'].apply(lambda x: x + 1)
che restituisce:
a b
0 2 2
1 3 3
2 4 4
3 5 5
'apply' non dovrebbe mai essere usato in una situazione come questa –
@TedPetrou hai perfettamente ragione, era solo un esempio su come applicare una funzione generale su una singola colonna, come richiesto dall'OP. –
Per una singola colonna meglio usare map()
, come questo:
df = pd.DataFrame([{'a': 15, 'b': 15, 'c': 5}, {'a': 20, 'b': 10, 'c': 7}, {'a': 25, 'b': 30, 'c': 9}])
a b c
0 15 15 5
1 20 10 7
2 25 30 9
df['a'] = df['a'].map(lambda a: a/2.)
a b c
0 7.5 15 5
1 10.0 10 7
2 12.5 30 9
Perché 'map()' è migliore di 'apply()' per una singola colonna? – ChaimG
Penso che dovrebbe essere 'lambda a: a/2.' invece. –
Non è necessaria alcuna funzione. Puoi lavorare direttamente su un'intera colonna.
dati Esempio:
>>> df = pd.DataFrame({'a': [100, 1000], 'b': [200, 2000], 'c': [300, 3000]})
>>> df
a b c
0 100 200 300
1 1000 2000 3000
Metà tutti i valori nella colonna a
:
>>> df.a = df.a/2
>>> df
a b c
0 50 200 300
1 500 2000 3000
invio prego alcuni dati campione di ingresso e uscita desiderata. –
Non dovresti quasi mai usare 'apply' in una situazione come questa. Operare direttamente sulla colonna. –