Pandas mágicos en el trabajo. Toda la lógica está fuera.
El mensaje de error "ValueError: If using all scalar values, you must pass an index"
dice que debe pasar un índice.
Esto no significa necesariamente que pasar un índice haga que los pandas hagan lo que quieres que haga
Cuando pasa un índice, los pandas tratarán las claves del diccionario como nombres de columna y los valores como lo que debe contener la columna para cada uno de los valores del índice.
a = 2
b = 3
df2 = pd.DataFrame({'A':a,'B':b}, index=[1])
A B
1 2 3
Pasando un índice más 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
Por lo general, un marco de datos genera automáticamente un índice cuando no se proporciona ninguno. Sin embargo, los pandas no saben cuántas filas de 2
y 3
qué quieres. Sin embargo, puedes ser más explícito al respecto
df2 = pd.DataFrame({'A':[a]*4,'B':[b]*4})
df2
A B
0 2 3
1 2 3
2 2 3
3 2 3
Sin embargo, el índice predeterminado está basado en 0.
Siempre recomendaría pasar un diccionario de listas al constructor del marco de datos al crear marcos de datos. Es más fácil de leer para otros desarrolladores. Pandas tiene muchas advertencias, no hagas que otros desarrolladores tengan que tener expertos en todas ellas para leer tu código.