将聚合序列转换为数据帧以供以后操作

时间:2017-05-16 20:28:08

标签: python sql pandas dataframe jupyter-notebook

在我将数据汇总到与其他数据帧相关的系列之后,我正在努力处理数据。我在SQL方面有十多年的经验,但我是PANDAS的新手,我发现这样一个简单的请求似乎有一个非常复杂的解决方案非常令人沮丧。

我想在SQL中做的是:

Select UniqueID, MinDate, DollarValue
From {select UniqueID, Min(date) as MinDate
       from DateTable 
       Join SalesTable
      Where DateTable.ServerTime < SalesTable.DateTime
     } as MinDateTable
     join SalesTable
Where MinDate between '2017-01-07 00:00:00'
                  and '2017-01-10 00:00:00

我的Jupyter笔记本中有什么:

 # Import the configparser library
import configparser

 # Import database stuff
import pymysql
import psycopg2

 # Import pandas and numpy - the python data science magical libraries.
import pandas as pd, numpy as np

DateTable = pd.read_sql(SQL, dbConn)
SalesTable = pd.read_sql(dwQuery, dwConn)
merged_df=DateTable.merge(SalesTable,left_on=['UniqueID'],right_on=['UniqueID'],how='inner')
merged_df[merged_df['server_time'] < merged_df['Datetime']]
gb = merged_df.groupby(['UniqueID', 'Datetime'])

这给了我奇怪的MinDateTable子查询,但后来我需要在SalesTable上重新加入它以获得在服务器事件时间戳之前发生的美元,而gb是一个系列,而不是数据帧。

以下是我尝试将系列转换为数据框:

gb.apply(lambda x: x['server_time'].set_index())
gb_agg = gb.agg({'server_time' : np.max})
gb_agg.apply(lambda x: x.count())

在第一行引发错误:

属性错误:&#39;系列&#39;对象没有属性&#39; set_index&#39;

然而,Set_index在其他帖子中标准地说明了将系列转换为数据框架的方法。

欢迎任何建议

1 个答案:

答案 0 :(得分:1)

gb.to_frame() 

应该将其转换为Dataframe。