Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 整形函数_Python_Pandas_Pivot_Reshape - Fatal编程技术网

Python 整形函数

Python 整形函数,python,pandas,pivot,reshape,Python,Pandas,Pivot,Reshape,为了添加许多优秀的例子,我正在尝试将数据重塑为我想要的格式 我目前拥有按客户、采购类别和日期编制的数据索引,并在各列中对每个日内时间段进行了观察: 我希望按购买类别进行聚合,并重新调整形状,以便按日期和时间对我的数据进行索引,同时客户出现在各列中 实现这一目标的关键是什么 在文本形式中,原始数据如下所示: customer采购类别日期00:3001:0001:301A01/07/20121.251.251.251B01/07/20120.8550.7860.6041C01/07/20120

为了添加许多优秀的例子,我正在尝试将数据重塑为我想要的格式

我目前拥有按客户、采购类别和日期编制的数据索引,并在各列中对每个日内时间段进行了观察:

我希望按购买类别进行聚合,并重新调整形状,以便按日期和时间对我的数据进行索引,同时客户出现在各列中

实现这一目标的关键是什么

在文本形式中,原始数据如下所示:

customer采购类别日期00:3001:0001:301A01/07/20121.251.251.251B01/07/20120.8550.7860.6041C01/07/20120001A02/07/20121.251.251.1251B02/07/20120.3090.0820.0591C02/07/20120002A01/07/20120002B01/07/20120.1670.1080.1192C01/07/20120002A02/07/07/2012000002/07/07/20120.110.1090.123我认为您需要通过聚合和重塑代码. 最后一列
level_1
,添加到
date
并转换:


你能给你的数据框一个可复制的版本吗?@MMF如果有帮助的话,我已经添加了可复制的文本表。
print (df)
    Customer Purchase Category        date  00:30  01:00  01:30
0          1                 A  01/07/2012  1.250  1.250  1.250
1          1                 B  01/07/2012  0.855  0.786  0.604
2          1                 C  01/07/2012  0.000  0.000  0.000
3          1                 A  02/07/2012  1.250  1.250  1.125
4          1                 B  02/07/2012  0.309  0.082  0.059
5          1                 C  02/07/2012  0.000  0.000  0.000
6          2                 A  01/07/2012  0.000  0.000  0.000
7          2                 B  01/07/2012  0.167  0.108  0.119
8          2                 C  01/07/2012  0.000  0.000  0.000
9          2                 A  02/07/2012  0.000  0.000  0.000
10         2                 B  02/07/2012  0.110  0.109  0.123

df1 = df.groupby(['Customer','date']).sum().stack().unstack(0).reset_index()
df1.date = pd.to_datetime(df1.date + df1.pop('level_1'), format='%d/%m/%Y%H:%M')
print (df1)
Customer                date      1      2
0        2012-07-01 00:30:00  2.105  0.167
1        2012-07-01 01:00:00  2.036  0.108
2        2012-07-01 01:30:00  1.854  0.119
3        2012-07-02 00:30:00  1.559  0.110
4        2012-07-02 01:00:00  1.332  0.109
5        2012-07-02 01:30:00  1.184  0.123