Массивы в Pandas (pd.array)
pd.array — это конструктор «расширенного» массива (ExtensionArray) Pandas.
В отличие от обычного NumPy-массива, он поддерживает специальные dtype:
Int64 (с пропусками), boolean, string, datetime64[ns, tz].
Используется в Series как «движок» хранения значений.
Когда использовать
Целые числа с пропусками — без
pd.arrayони превратятся вfloat.Строковый столбец — явный
"string"dtype работает лучше, чемobject.Нужны nullable bool без приведения к
object.
Пример 1. Int64 с NaN
import pandas as pd
a = pd.array([1, 2, None, 4], dtype="Int64")
print(a)
Output:
<IntegerArray>
[1, 2, <NA>, 4]
Length: 4, dtype: Int64
С обычным NumPy int это бы потребовало float и NaN.
Пример 2. Сравнение с NumPy
import pandas as pd
import numpy as np
print(pd.Series([1, None, 3]).dtype) # float64 (legacy)
print(pd.Series([1, None, 3], dtype="Int64").dtype) # Int64 (extension)
Output:
float64
Int64
Пример 3. string dtype
import pandas as pd
a = pd.array(["bot1", "bot2", None], dtype="string")
print(a)
print(a.dtype)
Output:
<StringArray>
['bot1', 'bot2', <NA>]
Length: 3, dtype: string
string
Пример 4. boolean dtype
import pandas as pd
a = pd.array([True, False, None], dtype="boolean")
print(a)
Output:
<BooleanArray>
[True, False, <NA>]
Length: 3, dtype: boolean
Пример 5. Доступ к массиву Series
import pandas as pd
s = pd.Series([1, 2, 3], dtype="Int64")
print(s.array)
print(type(s.array))
Output:
<IntegerArray>
[1, 2, 3]
Length: 3, dtype: Int64
<class 'pandas.core.arrays.integer.IntegerArray'>
Пример 6. to_numpy
import pandas as pd
s = pd.Series([1, 2, 3], dtype="Int64")
arr = s.to_numpy()
print(arr, arr.dtype)
Output:
[1 2 3] object
Если в данных есть NA, to_numpy вернёт object или поможет
na_value=np.nan.
Пример 7. datetime64 с timezone
import pandas as pd
a = pd.array(
["2026-01-15 10:00", "2026-01-15 11:00"],
dtype="datetime64[ns, Asia/Almaty]",
)
print(a)
Output:
<DatetimeArray>
['2026-01-15 10:00:00+05:00', '2026-01-15 11:00:00+05:00']
Length: 2, dtype: datetime64[ns, Asia/Almaty]
Подводные камни
Int64(с большой буквы) — это nullable extension dtype Pandas.int64(с маленькой) — это NumPy и не поддерживаетNA.Не все библиотеки умеют работать с ExtensionArray — иногда приходится приводить к NumPy.
pd.arrayсам угадывает dtype, но лучше указывать его явно.
См. также
Примечание
Лицензия и источники
Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.