Pandas mágicos no trabalho. Toda a lógica está fora.
A mensagem de erro "ValueError: If using all scalar values, you must pass an index"
Diz que você deve passar um índice.
Isso não significa necessariamente que a aprovação de um índice faça os pandas fazerem o que você quer que ele faça
Quando você passa um índice, os pandas tratam as chaves do dicionário como nomes de colunas e os valores como o que a coluna deve conter para cada um dos valores no índice.
a = 2
b = 3
df2 = pd.DataFrame({'A':a,'B':b}, index=[1])
A B
1 2 3
Passando um índice maior:
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
Um índice geralmente é gerado automaticamente por um quadro de dados quando nenhum é fornecido. No entanto, os pandas não sabe quantas linhas de 2
e 3
você quer. No entanto, você pode ser mais explícito sobre isso
df2 = pd.DataFrame({'A':[a]*4,'B':[b]*4})
df2
A B
0 2 3
1 2 3
2 2 3
3 2 3
O índice padrão é baseado em 0.
Eu recomendaria sempre passar um dicionário de listas para o construtor de quadro de dados ao criar quadros de dados. É mais fácil ler para outros desenvolvedores. O Pandas tem muitas advertências, não faça com que outros desenvolvedores tenham especialistas em todos eles para ler seu código.