Разбить фрейм данных в соответствии с уникальными значениями на множество меньших фреймов данных

#pandas #numpy #dataframe

#pandas #numpy #фрейм данных

Вопрос:

У меня большой фрейм данных (14 000 строк). Столбцы включают «заголовок», «x» и «y», а также другие случайные данные.

Для определенного заголовка я написал код, который в основном выполняет анализ, используя значения x и y для подмножества этих данных (но специфика для этого не важна).

Для этого заголовка (который является чем-то вроде «Номер детали Y1-17») имеется около 80 строк.

На данный момент я разработал только то, как заставить мой код работать с 1 подмножеством заголовков (т. Е. С одним набором строк с одинаковым заголовком) одновременно. Для этого я создал меньший фрейм данных из своего большого, используя:

 df = pd.read_excel(r"mydata.xlsx")
a = df.loc[df['title'].str.contains('Y1-17')]
  

Но, учитывая, что существует около 180 таких небольших наборов данных, которые мне нужны для этого анализа, я не хочу делать это вручную.

Мой вопрос в том, есть ли способ автоматически создавать все меньшие фреймы данных, разделяя данные по уникальному значению «заголовок»? Вся помощь, которую я нашел, похоже, вам нужно указать «заголовок», чтобы создать подмножество. Я хочу подмножество всего этого, и я не хочу перечислять все названия заголовков, чтобы сделать это.

Я довольно много искал и ничего не нашел, однако я новичок, поэтому вполне возможно, что я пропустил какой-то действительно простой способ сделать это.

Я не уверен, важна ли его информация, но модули, с которыми я работаю, pandas и numpy

Спасибо за любую помощь!

Ответ №1:

Вы можете использовать Pandas groupby

Например:

 df_dict = {key: title for key, title in df.copy().groupby('title', sort=False)}
  

Который создает словарь фреймов данных, каждый из которых содержит все столбцы и только строки, относящиеся к каждому уникальному значению title .