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 2e 3vuoi. 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.