从Pandas DataFrame中提取系列对象

时间:2016-09-29 16:44:52

标签: python pandas dataframe time-series

我有一个包含

列的数据框
['CPL4', 'Part Number', 'Calendar Year/Month', 'Sales', 'Inventory']

对于每个“零件编号”,“日历年/月”在每个零件编号上都是唯一的。

我想将每个零件编号转换为一个单变量系列,其中'Calendar Year / Month'作为索引,并将'Sales'或'Inventory'作为值。

如何使用pandas内置函数完成此操作,而不是手动迭代数据框?

3 个答案:

答案 0 :(得分:2)

在pandas中,这称为MultiIndex。尝试:

import pandas as pd
df = pd.DataFrame(file, 
        index=['Part Number', 'Calendar Year/Month'], 
        columns = ['Sales', 'Inventory'])

答案 1 :(得分:1)

你可以使用groupby方法,例如:

grouped_df = df.groupby('Part Number')

然后您可以访问某个部件号的df并轻松设置索引,如下所示:

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

如果你只想要2列,你可以这样做:

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

答案 2 :(得分:0)

从这里的答案和评论,以及更多的研究,我结束了以下解决方案。

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

其中sku是来自df的特定部件号["部件号"]。唯一()

这将为您提供一个单变量的时间序列(temp_series),其编号为" Calendar Year / Month"价值为"销售" 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']