Если вы добавите _metadata в пользовательский подкласс серии, имя последовательности теряется при индексацииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Если вы добавите _metadata в пользовательский подкласс серии, имя последовательности теряется при индексации

Сообщение Anonymous »

pandas 2.2.3
Давайте рассмотрим два варианта определения пользовательского подтипа Pandas.series . В первом из них не добавляются пользовательские свойства, в то время как во втором можно включено пользовательские метаданные: < /p>

Код: Выделить всё

import pandas as pd

class MySeries(pd.Series):

@property
def _constructor(self):
return MySeries

seq = MySeries([*'abc'], name='data')

print(f'''Case without _metadata:
{isinstance(seq[0:1], MySeries) = }
{isinstance(seq[[0, 1]], MySeries) = }
{seq[0:1].name = }
{seq[[0, 1]].name = }
''')

class MySeries(pd.Series):

_metadata = ['property']

@property
def _constructor(self):
return MySeries

seq = MySeries([*'abc'], name='data')
seq.property = 'MyProperty'

print(f'''Case with defined _metadata:
{isinstance(seq[0:1], MySeries) = }
{isinstance(seq[[0, 1]], MySeries) = }
{seq[0:1].name = }
{seq[[0, 1]].name = }
{getattr(seq[0:1], 'property', 'NA') = }
{getattr(seq[[0, 1]], 'property', 'NA') = }
''')
< /code>
Вывод будет: < /p>
Case without _metadata:
isinstance(seq[0:1], MySeries) = True
isinstance(seq[[0, 1]], MySeries) = True
seq[0:1].name = 'data'
seq[[0, 1]].name = 'data'

Case with defined _metadata:
isinstance(seq[0:1], MySeries) = True
isinstance(seq[[0, 1]], MySeries) = True
seq[0:1].name = 'data'
seq[[0, 1]].name = None         

Подробнее здесь: [url]https://stackoverflow.com/questions/79636672/if-you-add-metadata-to-a-custom-subclass-of-series-the-sequence-name-is-lost-w[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»