2014-12-02 3 views
0

У меня есть dataframe (называемый df) и вы хотите разбить его на несколько фреймов данных на основе значений в одном из столбцов.создание нескольких данных, которые содержат подмножества исходной части данных pandas

Я думаю, что синтаксис будет:

month = df.month.unique().tolist() 
for item in month: 
    [item] = df[df[month]==[item]] 

ответ

0

Объект DataFrameGroupBy итератор, который возвращает вложенные DataFrames:

for month, subdf in df.groupby(['month']): 
    ... 

Если вместо этого вы хотите, случайный доступ к суб- DataFrames, указанные в месяце , вы можете изменить столбец month в индекс:

df = df.set_index(['month']) 

, а затем вы можете выбрать строки по месяцам с:

df.loc[month] 

Например,

In [4]: df = pd.DataFrame({'month': ['Jan','Jan','Feb'], 'val':[1,2,3]})   
In [6]: df = df.set_index(['month'])  

Учитывая это DataFrame:

In [7]: df 
Out[7]: 
     val 
month  
Jan  1 
Jan  2 
Feb  3 

Это выбирает строки где месяц (index) is 'Jan':

In [8]: df.loc['Jan'] 
Out[8]: 
     val 
month  
Jan  1 
Jan  2 
+0

unutbu - спасибо! Как относиться к отдельным кадрам данных, которые теперь сгенерированы? То есть Январь, Февраль, Март и т. Д.? – yoshiserry

+0

Вы хотите получить произвольный доступ к субкадрам данных, выбранным по значениям месяца, тогда я думаю, что было бы лучше сделать «месяц» индексом. Затем вы можете выбрать sub-dataframe с помощью 'df.loc [month]'. Я отредактировал сообщение выше, чтобы показать, что я имею в виду. – unutbu

+0

unutbu, поэтому df.loc [month], где месяц - это имя dataframe (и значение из столбца month_date), как вы показываете только данные в ядре данных? – yoshiserry

Смежные вопросы