Magia pand w pracy. Cała logika jest wyłączona.
Komunikat o błędzie "ValueError: If using all scalar values, you must pass an index"
mówi, że musisz przekazać indeks.
Nie musi to oznaczać, że przekazanie indeksu powoduje, że pandy robią to, co chcesz
Po przejściu indeksu pandy będą traktować klucze słownika jako nazwy kolumn, a wartości jak to, co kolumna powinna zawierać dla każdej wartości w indeksie.
a = 2
b = 3
df2 = pd.DataFrame({'A':a,'B':b}, index=[1])
A B
1 2 3
Przekazywanie większego indeksu:
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
Indeks jest zwykle generowany automatycznie przez ramkę danych, gdy nie jest podany. Jednak pandy nie wiedzą, ile rzędów 2
i 3
chcesz. Możesz jednak wyrazić się bardziej otwarcie
df2 = pd.DataFrame({'A':[a]*4,'B':[b]*4})
df2
A B
0 2 3
1 2 3
2 2 3
3 2 3
Domyślny indeks wynosi 0.
Podczas tworzenia ramek danych zalecałbym zawsze przekazywanie słownika list do konstruktora ramki danych. Łatwiej jest czytać innym programistom. Panda ma wiele ostrzeżeń, nie zmuszaj innych programistów, by czytali Twój kod.