Panda magici al lavoro. Tutta la logica è fuori.
Il messaggio di errore "ValueError: If using all scalar values, you must pass an index"
indica che è necessario passare un indice.
Questo non significa necessariamente che passare un indice fa fare ai panda quello che vuoi che faccia
Quando si passa un indice, i panda trattano le chiavi del dizionario come nomi di colonna e i valori come ciò che la colonna deve contenere per ciascuno dei valori nell'indice.
a = 2
b = 3
df2 = pd.DataFrame({'A':a,'B':b}, index=[1])
A B
1 2 3
Passando un indice più grande:
df2 = pd.DataFrame({'A':a,'B':b}, index=[1, 2, 3, 4])
A B
1 2 3
2 2 3
3 2 3
4 2 3
Un indice viene generalmente generato automaticamente da un frame di dati quando non ne viene fornito nessuno. Tuttavia, Panda non sa quante righe di 2
e 3
vuoi. Puoi comunque essere più esplicito al riguardo
df2 = pd.DataFrame({'A':[a]*4,'B':[b]*4})
df2
A B
0 2 3
1 2 3
2 2 3
3 2 3
L'indice predefinito è basato su 0 però.
Consiglierei di passare sempre un dizionario di elenchi al costruttore di dataframe durante la creazione di dataframe. È più facile da leggere per altri sviluppatori. Pandas ha molti avvertimenti, non costringere gli altri sviluppatori ad esperti in tutti loro per leggere il tuo codice.