Панда магія на роботі. Вся логіка вийшла.
Повідомлення про помилку "ValueError: If using all scalar values, you must pass an index"
говорить, що ви повинні пройти індекс.
Це не обов'язково означає, що передача індексу змушує панди робити те, що ви хочете
Під час передачі індексу панди розглядають ваші словникові ключі як назви стовпців, а значення - як те, що стовпець повинен містити для кожного зі значень в індексі.
a = 2
b = 3
df2 = pd.DataFrame({'A':a,'B':b}, index=[1])
A B
1 2 3
Проходження більшого індексу:
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
Індекс, як правило, автоматично генерується фреймом даних, коли не вказано жодного. Однак, панди не знають , скільки рядків 2
і 3
ви хочете. Однак ви можете бути більш чіткими щодо цього
df2 = pd.DataFrame({'A':[a]*4,'B':[b]*4})
df2
A B
0 2 3
1 2 3
2 2 3
3 2 3
Індекс за замовчуванням дорівнює 0, хоча.
Я б рекомендував завжди створювати словник списків конструктору фреймів даних при створенні фреймів даних. Простіше читати іншим розробникам. У Pandas є багато застережень, не змушуйте інших розробників доводитись до експертів з усіх них, щоб прочитати ваш код.