Нашли ошибку?
базовыйpandas 3.0.6

DataFrame

Создать таблицу из словаря столбцов, списка записей или массива NumPy.

Нужно знать:Series

Содержание статьи

Коротко

  • Словарь {"столбец": [значения]} — самый частый способ; списки должны быть одной длины.
  • Список словарей — по записи на строку; отсутствующие ключи становятся NaN.
  • Из массива NumPy — с явными columns и index.
  • Словарь из Series выравнивается по индексу: строки сопоставляются по меткам, а не по порядку.
  • shape — (строки, столбцы), columns — имена столбцов, index — метки строк, dtypes — типы столбцов.

Синтаксис

pd.DataFrame({"a": [1, 2], "b": [3, 4]})
pd.DataFrame([{"a": 1, "b": 3}, {"a": 2, "b": 4}])
pd.DataFrame(array, columns=["a", "b"], index=["x", "y"])
df.shape, df.columns, df.index, df.dtypes

Параметры

ПараметрЧто делаетПо умолчанию
dataсловарь столбцов, список записей, массив, другой DataFrameобязательный
indexметки строкRangeIndex 0…n−1
columnsимена столбцов (для массива) или какие столбцы взять и в каком порядкепо данным
dtypeодин тип для всех столбцовпо данным

Примеры

Из словаря столбцов
pd.DataFrame({
    "product": ["чай", "кофе", "сок"],
    "price": [120, 180, 95],
    "in_stock": [True, False, True],
})
Вывод
  product  price  in_stock
0     чай    120      True
1    кофе    180     False
2     сок     95      True
Из списка записей
rows = [
    {"name": "Аня", "age": 21},
    {"name": "Борис", "age": 19, "city": "Тула"},   # лишний ключ
]
pd.DataFrame(rows)                                  # недостающие значения — NaN
Вывод
    name  age  city
0    Аня   21   NaN
1  Борис   19  Тула
Из массива NumPy
pd.DataFrame(np.arange(6).reshape(2, 3), columns=["a", "b", "c"], index=["x", "y"])
Вывод
   a  b  c
x  0  1  2
y  3  4  5
Свой индекс
pd.DataFrame({"price": [120, 180]}, index=["чай", "кофе"])
Вывод
      price
чай     120
кофе    180
Форма, столбцы, индекс, типы
df = pd.DataFrame({"price": [120, 180], "qty": [3, 1]}, index=["чай", "кофе"])
print(df.shape)
print(df.columns)
print(df.index)
df.dtypes
Вывод
(2, 2)
Index(['price', 'qty'], dtype='str')
Index(['чай', 'кофе'], dtype='str')
price    int64
qty      int64
dtype: object

Подводные камни

Списки разной длины

Столбцы разной длиныошибка: ValueError
pd.DataFrame({"a": [1, 2, 3], "b": [1, 2]})
Ошибка
ValueError: All arrays must be of the same length

Series сопоставляются по меткам

Если столбцы переданы как Series с разными индексами, результат содержит объединение меток, а недостающие значения — NaN. Это выравнивание по индексу.

Словарь из Series
price = pd.Series({"чай": 120, "кофе": 180})
stock = pd.Series({"кофе": 3, "чай": 10, "сок": 5})
pd.DataFrame({"price": price, "stock": stock})      # строки выравниваются по индексу
Вывод
      price  stock
кофе  180.0      3
сок     NaN      5
чай   120.0     10