处理python

时间:2017-10-25 08:33:52

标签: python pandas dataframe

我开始使用由day组成的日期框架,一个名为wap的列和一个产品列表。 对于给定的产品,我计算了结果,这些结果基本上是列抽头中的一些操作并保存在新列中。 (上面的视频代码)

NEG_00_04_p =  waps_df1[waps_df1['produktname']=='NEG_00_04'] #one prodkt NEG_00_04
NEG_00_04_p = NEG_00_04_p.reset_index()
NEG_00_04_p1 = []
NEG_00_04_p['Diff'] = -NEG_00_04_p['wap'].diff(-1) 
NEG_00_04_p['Diff'].shift(+1).fillna(0)
NEG_00_04_p['Diff'] = NEG_00_04_p['NewColumn'].shift(+1).fillna(0)
NEG_00_04_p['Result'] = NEG_00_04_p['NewColumn'] + NEG_00_04_p['wap']

结果,我得到了这个:

index   datum_von   datum_bis produktname    wap   Diff
0       0  2017-10-10  2017-10-10   NEG_00_04   2.10   1.32
1      12  2017-10-11  2017-10-11   NEG_00_04   3.42  18.27
2      24  2017-10-12  2017-10-12   NEG_00_04  21.69  -4.92
3      36  2017-10-13  2017-10-13   NEG_00_04  16.77  -4.47
4      48  2017-10-14  2017-10-14   NEG_00_04  12.30   1.17
5      60  2017-10-15  2017-10-15   NEG_00_04  13.47  -4.18
6      72  2017-10-16  2017-10-16   NEG_00_04   9.29   1.40
7      84  2017-10-17  2017-10-17   NEG_00_04  10.69  -1.11
8      96  2017-10-18  2017-10-18   NEG_00_04   9.58  -1.62

发生在初始日期框架中,我有许多产品(总共12个),并且每天都会重复产品,例如:

datum_von produktname    wap
0    2017-10-10   NEG_00_04   2.10
1    2017-10-10   NEG_04_08   1.50
2    2017-10-10   NEG_08_12   0.50
3    2017-10-10   NEG_12_16   0.55
4    2017-10-10   NEG_16_20   0.52
5    2017-10-10   NEG_20_24   0.48
6    2017-10-10   POS_00_04   0.00
7    2017-10-10   POS_04_08   0.00
8    2017-10-10   POS_08_12   0.42
9    2017-10-10   POS_12_16   0.00
10   2017-10-10   POS_16_20   1.04
11   2017-10-10   POS_20_24   0.00
12   2017-10-11   NEG_00_04   3.42
13   2017-10-11   NEG_04_08   4.91
14   2017-10-11   NEG_08_12   0.31
15   2017-10-11   NEG_12_16   0.34
16   2017-10-11   NEG_16_20   0.45
17   2017-10-11   NEG_20_24   0.50
18   2017-10-11   POS_00_04   0.00
19   2017-10-11   POS_04_08   0.00
20   2017-10-11   POS_08_12   0.12
21   2017-10-11   POS_12_16   0.00
22   2017-10-11   POS_16_20   1.28
23   2017-10-11   POS_20_24   0.00
24   2017-10-12   NEG_00_04  21.69
25   2017-10-12   NEG_04_08  15.36
26   2017-10-12   NEG_08_12   0.87
27   2017-10-12   NEG_12_16   1.42
28   2017-10-12   NEG_16_20   0.76
29   2017-10-12   NEG_20_24   0.65
..          ...         ...    ...
150  2017-10-22   POS_00_04   0.00
151  2017-10-22   POS_04_08   0.00
152  2017-10-22   POS_08_12   0.00
153  2017-10-22   POS_12_16   0.00
154  2017-10-22   POS_16_20   0.00
155  2017-10-22   POS_20_24   0.00
156  2017-10-23   NEG_00_04  10.46
157  2017-10-23   NEG_04_08   9.73
158  2017-10-23   NEG_08_12   0.87
159  2017-10-23   NEG_12_16   1.26
160  2017-10-23   NEG_16_20   0.72
161  2017-10-23   NEG_20_24   0.68
162  2017-10-23   POS_00_04   0.00
163  2017-10-23   POS_04_08   0.00
164  2017-10-23   POS_08_12   0.00
165  2017-10-23   POS_12_16   0.00
166  2017-10-23   POS_16_20   0.00
167  2017-10-23   POS_20_24   0.00

我想要做的是实际完成所有产品的结果,并在我想要的日期框架中组织后

作为索引的天数和每列作为不同的产品。由于所有产品都有相同的天数,结果将是带有['Results']

的数组

1 个答案:

答案 0 :(得分:0)

首先,您可以将日期索引设置为:

indexed_df = orig_df.set_index('datum_von')

您可以使用添加列,该列是您产品的标签编码版本。

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
le = LabelEncoder()
indexed_df['label_products'] = le.fit_transform(indexed['produktname'])
ohe = OneHotEncoder()
onehotmatrix = ohe.fit_transform(indexed_df['label_products'])
# Just join the onehotmatrix on your dataframe

您将产品编码为数字,甚至是一个热门开关,每个产品都有1个,其他11个列为0。