Короткий ответ
Series — одномерный массив значений с индексом (по сути один столбец), а DataFrame — двумерная таблица из нескольких Series, выровненных по общему индексу строк.
Как это работает подробнее
Series хранит однородные (или object) значения плюс метки индекса для доступа по ключу; DataFrame — это набор именованных столбцов-Series, каждый со своим dtype, но с общим индексом строк.
Пример кода
Пример Python
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
df = pd.DataFrame({'value': s, 'flag': [True, False, True]})
print(type(df['value'])) # <class 'pandas.core.series.Series'>
print(type(df[['value']])) # <class 'pandas.core.frame.DataFrame'>Что использовать на практике
- На практике: df['col'] возвращает Series, а df[['col']] — DataFrame из одного столбца; это различие важно при построении цепочек методов, где следующий метод ожидает конкретный тип.
- Проверка: вывод type() подтверждает, что одинарные и двойные скобки дают разные типы объекта.
Подводные камни
- Частые ошибки: путают df['col'] и df[['col']], из-за чего код падает на методах, специфичных для DataFrame; забывают, что арифметика между двумя Series выравнивается по индексу, а не по позиции, и при несовпадающих индексах получаются NaN вместо ожидаемого результата.