Sto provando a fare un pivot di una tabella contenente stringhe come risultato.panda - pivot_table con valori non numerici? (DataError: nessun tipo numerico da aggregare)
import pandas as pd
df1 = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': ["on","off","off","on","on","off","off","on"]})
df1.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
Ma ottengo: DataError: No numeric types to aggregate
.
Questo funziona come previsto quando cambio i valori di risultato ai numeri:
df2 = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': [1,0,0,1,1,0,0,1]})
df2.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
E ho quello che mi serve:
variable1 A B
variable2 a b a b
variable3 x y x y x y
index
0 1 NaN NaN NaN NaN NaN
1 NaN NaN 0 NaN NaN NaN
2 NaN NaN NaN NaN 0 NaN
3 NaN NaN NaN NaN NaN 1
4 NaN 1 NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN 0
6 NaN NaN NaN NaN 0 NaN
7 NaN NaN NaN 1 NaN NaN
so di poter mappare le stringhe in valori numerici e poi invertire l'operazione, ma forse c'è una soluzione più elegante?
Finalmente una soluzione per la sostituzione delle modifiche pivot() nei panda 0.17.1 – camdenl
@RandallGoodwin, mi rendo conto che questa domanda ha due anni, ma sto ricevendo l'errore "ValueError: la funzione non si riduce "Usando il tuo lambda, dalla cima della tua testa, sapresti perché? – RustyShackleford
Un'altra idea: se si hanno potenzialmente più valori che appaiono, si possono concatre stringhe facendo il tuo 'aggfunc = lambda x:" ".join ([str (y) per y in x])' – dllahr