2016-09-29 2 views
0

У меня есть dataframe с колоннамиобъектов Extract серии из панды DataFrame

['CPL4', 'Part Number', 'Calendar Year/Month', 'Sales', 'Inventory'] 

Для каждой «Part Number», «Календарь Год/Месяц» будет уникальным для каждого номера детали.

Я хочу преобразовать каждый номер детали в одномерный ряд с «Годом календарного года/месяца» в качестве индекса и «Продажи» или «Инвентарь» в качестве значения.

Как это сделать, используя встроенные функции pandas, а не итерации через dataframe вручную?

+0

Если «календарь Год/месяц» является уникальным, вы можете установить его б e индекс данных. Разве это не решает вашу проблему? –

+0

df = pandas.DataFrame (файл, index = ['Calendar Year/Month'], columns = ['Sales', 'Inventory']) –

+0

Я оговорился. «Календарный год/месяц» уникален в каждом номере Partnumber. Но, я думаю, это может все еще работать. –

ответ

0

Из ответов и комментариев здесь, а также немного больше исследований, я закончил следующее решение.

temp_series = df[df[ "Part Number" == sku ] ].pivot(columns = ["Calendar Year/Month"], values = "Sales").iloc[0] 

Где артикулов товаров конкретный номер детали ДФ [ "Part Number"]. Уникальный()

Это даст вам одномерные временные ряды (temp_series) индексируются "календарный год/месяц" с значения «Продажи» EG:

1.2015  NaN 
1.2016  NaN 
2.2015  NaN 
2.2016  NaN 
3.2015  NaN 
3.2016  NaN 
4.2015  NaN 
4.2016  NaN 
5.2015  NaN 
5.2016  NaN 
6.2015  NaN 
6.2016  NaN 
7.2015  NaN 
7.2016  NaN 
8.2015  NaN 
8.2016  NaN 
9.2015  NaN 
10.2015 NaN 
11.2015 NaN 
12.2015 NaN 
Name: 161, dtype: float64 

<class 'pandas.core.series.Series'>]) 

из колонок

['CPL4', 'Part Number', 'Calendar Year/Month', 'Sales', 'Inventory'] 
1

вы можете использовать метод GroupBy такие есть:

grouped_df = df.groupby('Part Number') 

, а затем вы можете получить доступ к ФР определенной части числа и установить индекс легко таковой:

new_df = grouped_df.get_group('THEPARTNUMBERYOUWANT').set_index('Calendar Year/Month') 

если вы только хотите 2 колонки вы можете сделать:

print new_df[['Sales', 'Inventory']]] 
2

В пандах это называется MultiIndex. Попытайтесь:

import pandas as pd 
df = pd.DataFrame(file, 
     index=['Part Number', 'Calendar Year/Month'], 
     columns = ['Sales', 'Inventory']) 
Смежные вопросы