Вопрос 1. Как лучше всего сохранять метаданные в фрейме данных? Я знаю о следующей практике кодирования
import pandas as pd
df = pd.DataFrame([])
df.currency = 'USD'
df.measure = 'Price'
df.frequency = 'daily'
Но, как указано в этом сообщении Добавление метаинформации/метаданных в pandas DataFrame это связано с риском потери информации при применении таких функций, как groupby, pivot, join или loc, поскольку они могут возвращать новый DataFrame без прикрепленных метаданных.
Это все еще действует или за это время произошло обновление обработки метаинформации? Является ли хорошей практикой кодирования подкласс панд для этой цели?
Вопрос 2. Что может быть альтернативной практикой написания кода?
Я не думаю, что строительство отдельного объекта очень подходит. Также работа с Multiindex меня не убеждает. Допустим, я хочу разделить фрейм данных с ценами на фрейм данных с прибылью. Работа с мультииндексами будет очень сложной.
#define price DataFrame
p_index = pd.MultiIndex.from_tuples([['Apple', 'price', 'daily'],['MSFT', 'price', 'daily']])
price = pd.DataFrame([[90, 20], [85, 30], [70, 25]], columns=p_index)
# define earnings dataframe
e_index = pd.MultiIndex.from_tuples(
[['Apple', 'earnings', 'daily'], ['MSFT', 'earnings', 'daily']])
earnings=pd.DataFrame([[5000, 2000], [5800, 2200], [5100, 3000]],
columns=e_index)
price.divide(earnings.values, level=1, axis=0)
В приведенном выше примере я даже не гарантирую, что индексы компаний действительно совпадают. Мне, вероятно, нужно будет вызвать pd.DataFrame.reindex() или аналогичный. С моей точки зрения, это не может быть хорошей практикой кодирования.
Есть ли простое решение проблемы обработки метаинформации в этом контексте, которого я не вижу?
заранее спасибо