Должен ли я использовать словарь или серию для хранения набора данных? - PullRequest
0 голосов
/ 01 октября 2018

Предположим, у меня есть несколько фреймов данных: df1, df2, df3 и т. Д. Метка каждого фрейма данных - это A1, A2, A3 и т. Д. Я хочу использовать эту информацию в целом, чтобы я мог их передать.Мне вспомнились три метода:

метод 1

использовать список меток: labels=["A1", "A2", "A3"...] и список фреймов данных dfs=[df1, df2, df3...].

метод 2

используйте словарь: d={"A1": df1, "A2": df2, "A3": df3}.

метод 3

используйте ряд панд: s=pd.Series([df1, df2, df3], index=["A1", "A2", "A3"]).

Я буду использовать метку и фреймы данных последовательно, поэтому я думаю, что method1 и method3 должны быть моим выбором.Однако при использовании метода 1 мне потребуется передать два элемента, а при использовании метода 3 мне нужно сохранить только один объект. Является ли обычной практикой помещать кадры данных в серии? Я редко вижу, чтобы люди делали это, это противоречит передовому опыту?Есть ли лучшие предложения?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Метод 2 также работает.Начиная с Python 3.6 он запоминает порядок его создания.

0 голосов
/ 01 октября 2018

OrderedDict, вероятно, было бы более обычным, чем использование серии для этого.

from collections import OrderedDict
d = OrderedDict([("A1", df1), ("A2", df2), ("A3", df3)])

Это можно легко повторить:

for label, df in d:
    print(label, df)

То есть я не могуувидеть любую вескую причину не использовать серию панд.Небольшое преимущество использования ряда состоит в том, что вы можете получить доступ к фреймам данных с помощью точечной нотации s.A1, s.A2 и т. Д., А также с помощью словарной нотации s["A1"].Используя серию, также было бы относительно легко отсортировать кадры данных, вставить дополнительные в середине или связать с ними дополнительные метаданные позже, если это необходимо.

(см. этот вопрос в словареупорядочение в Python 3.6 и 3.7 - вы можете использовать обычный словарь вместо OrderedDict, если используете Python 3.7, и вам не нужно использовать другие «упорядоченные» поведения. В Python 3.6 сохранение порядка вставкидеталь реализации и на нее не следует полагаться.)

...