Si verifica un errore e non sono sicuro di come risolverlo.Pandas Dataframe ValoreErrore: la forma dei valori passati è (X,), gli indici implicano (X, Y)
Il seguente sembra funzionare:
def random(row):
return [1,2,3,4]
df = pandas.DataFrame(np.random.randn(5, 4), columns=list('ABCD'))
df.apply(func = random, axis = 1)
e la mia uscita è:
[1,2,3,4]
[1,2,3,4]
[1,2,3,4]
[1,2,3,4]
Tuttavia, quando cambio una delle delle colonne per un valore come 1 o Nessuno:
def random(row):
return [1,2,3,4]
df = pandas.DataFrame(np.random.randn(5, 4), columns=list('ABCD'))
df['E'] = 1
df.apply(func = random, axis = 1)
ho la l'errore:
012.351.641.061.ValueError: Shape of passed values is (5,), indices imply (5, 5)
Ho lottato con questo per alcuni giorni e niente sembra funzionare. Ciò che è interessante è che quando cambio
def random(row):
return [1,2,3,4]
a
def random(row):
print [1,2,3,4]
tutto sembra funzionare normalmente.
Questa domanda è un modo più chiaro di asking this question, che ritengo possa essere stato confuso.
Il mio obiettivo è calcolare un elenco per ogni riga e quindi creare una colonna fuori di esso.
MODIFICA: Originariamente inizio con un dataframe che ha una colonna. Aggiungo 4 colonne in 4 differenze per applicare i passaggi, e poi quando provo ad aggiungere un'altra colonna ottengo questo errore.
cosa stai in realtà cercando di fare? usando apply con una funzione che restituisce una lista cercherà di forzare questo ad una serie, quindi ha bisogno della stessa lunghezza della lunghezza originale, OPPURE uno scalare (incluso None). – Jeff
L'output nella tua domanda non è quello che ottieni da applicare. Il tuo output nel primo caso è DataFrame con 4 colonne, come ha detto @Jeff, è un elenco coercitato in righe. –
Sto cercando di aggiungere una colonna al dataframe. Questa colonna deve essere riempita con un valore calcolato. Il valore calcolato viene calcolato dai valori di ogni riga. La funzione random è la cosa che calcola il valore. – user1367204