У меня есть такой кадр данных:

name   time    session1    session2    session3
Alex   135      10             3           5
Lee    136       2             6           4

Я хочу сделать несколько кадров данных на основе каждой сессии. например, я хочу сделать фрейм данных с name, time и session1. и кадр данных 2 имеет name, time и session2. и кадр данных 3 имеет name, time и session3. Я хочу использовать для цикла или любой другой способ лучше, но я не знаю, как выбрать столбец 1,2,3 за один раз, но столбец 1,2, 4 и т. Д. Любой имеет представление об этом. Данные сохраняются в pandas dataframe. Я просто не знаю, как напечатать это в Stackoverflow здесь. Спасибо

1
Maryg 21 Сен 2018 в 01:48

2 ответа

Лучший ответ

Я не думаю, что вам нужно создавать новый словарь для этого.

Просто нарежьте фрейм данных, когда это необходимо.

df[['name', 'time', 'session 1']]

Если вы думаете, что следующий дизайн может вам помочь, вы можете установить name и time в качестве индексов (df.set_index(['name', 'time'])) и просто

df['session 1']
1
rafaelc 20 Сен 2018 в 23:59

Организовать его в словарь данных:

dict_of_dfs = {f'df {i}':df[['name','time', i]] for i in df.columns[2:]}

Затем вы можете получить доступ к каждому фрейму данных, как и к любым другим значениям словаря:

>>> dict_of_dfs['df session1']
   name  time  session1
0  Alex   135        10
1   Lee   136         2
>>> dict_of_dfs['df session2']
   name  time  session2
0  Alex   135         3
1   Lee   136         6
1
sacuL 20 Сен 2018 в 22:54