删除agg创建的标签(['sum','count'])

2024-09-30 20:37:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个可以重构为pd.DataFrame(dict)的df:

           city   d1      d2       d3       d4
date                    
2014-05-01  sfo 4.26    6.58     2.32    -4.87
2014-05-01  yyz 2.90    6.64    24.78   -50.55
2014-05-01  yvr 2.90    6.64    24.78   -50.55
2014-05-01  dfw 4.06    6.54     2.40    -4.06
2014-05-01  pdx 9.96    6.66    30.35    64.24

听写:

{'date': {0: pd.Timestamp('2014-05-01 00:00:00'),
  1: pd.Timestamp('2014-05-01 00:00:00'),
  2: pd.Timestamp('2014-05-01 00:00:00'),
  3: pd.Timestamp('2014-05-01 00:00:00'),
  4: pd.Timestamp('2014-05-01 00:00:00')},
 'city': {0: 'sfo', 1: 'yyz', 2: 'yvr', 3: 'dfw', 4: 'pdx'},
 'd1': {0: 4.2599999999999998,
  1: 2.8999999999999999,
  2: 2.8999999999999999,
  3: 4.0599999999999996,
  4: 9.9600000000000009},
 'd2': {0: 6.5800000000000001,
  1: 6.6399999999999997,
  2: 6.6399999999999997,
  3: 6.54,
  4: 6.6600000000000001},
 'd3': {0: 2.3199999999999998,
  1: 24.780000000000001,
  2: 24.780000000000001,
  3: 2.3999999999999999,
  4: 30.350000000000001},
 'd4': {0: -4.8700000000000001,
  1: -50.549999999999997,
  2: -50.549999999999997,
  3: -4.0599999999999996,
  4: 64.239999999999995}}

df.set_index(['date'], inplace=True)

我通过TimeGrouper执行以下聚合:

grouped = df.groupby(['city', pd.TimeGrouper('M')])
monthly_agg = grouped.agg(['sum', 'count'])

每月\u agg如下所示:

        d1  d2  d3  d4
                 sum    count    sum    count     sum   count      sum  count
city    date                                
dfw 2014-05-31  4.06        1   6.54        1    2.40       1    -4.06      1
pdx 2014-05-31  9.96        1   6.66        1   30.35       1    64.24      1
sfo 2014-05-31  4.26        1   6.58        1    2.32       1    -4.87      1
yvr 2014-05-31  2.90        1   6.64        1   24.78       1   -50.55      1
yyz 2014-05-31  2.90        1   6.64        1   24.78       1   -50.55      1

countlabel列用于健全性检查,但一旦完成,我希望能够删除它

同样,d1、d2、d3、d4等下面的sum标签也不再需要了

我想要的输出:

                  d1      d2       d3       d4
city    date                                
dfw 2014-05-31  4.06    6.54     2.40    -4.06
pdx 2014-05-31  9.96    6.66    30.35    64.24
sfo 2014-05-31  4.26    6.58     2.32    -4.87
yvr 2014-05-31  2.90    6.64    24.78   -50.55
yyz 2014-05-31  2.90    6.64    24.78   -50.55

我怎么得到这个


Tags: citydatecounttimestampd2d1pdd3
3条回答

EJB项目是一个专注于开发企业JavaBean的项目。通常,EJB依赖EntityBean来实现持久性,而持久性是使用JPA技术实现的(将JPA视为EJB的依赖项)

您可以选择独立于EJB创建JPA项目的原因是,有些人可能不想(或不需要)使用EJB,但他们仍然需要使用诸如JPA之类的ORM框架。例如,这种情况可能是一个web项目(即JSF),它将直接使用JPA进行持久化(无EJB)

要点是,尽管EJB3使用JPA实现持久性,但为了从JPA这样的ORM框架中获益,您不必在项目中使用EJB(除非您需要这样做)

现在,要在eclipse中的EJB项目上启用JPA,右键单击该项目,转到“project Facets”选项并选择JPA方面。通过这样做,eclipse将添加所需的库,创建必要的工件(persistence.xml),并在IDE上启用与JPA相关的工具

这取决于您使用的Java EE版本。在JavaEE6中,我们可以在WAR文件中包含EJB。所以一个动态网络项目就足够了

如果您使用的是JavaEE1.5,那么您需要一个用于JSF的动态Web项目,对于无状态bean,您需要一个EJB项目,还需要一个企业项目来将WAR和JAR捆绑到一个EAR中。您可以在EJB项目本身中拥有与持久性相关的类,而不需要这里的JPA项目

JavaEE提供了独立于EJB使用JPA的功能,因此如果您的应用程序不需要EJB,但仍然希望使用JPA,那么您可以选择JPA项目

Java持久性API,有时被称为JPA,是一种Java编程语言规范,它描述了使用Java平台标准版和Java平台企业版管理应用程序中的关系数据

Java持久性API是JSR220专家组工作的一部分。JPA2.0是JSR317专家组的工作

在这种情况下,持久性包括三个方面:

the API itself, defined in the javax.persistence package
the Java Persistence Query Language (JPQL)
object/relational metadata

Enterprise JavaBeans(EJB)是由Sun Microsystems开发的Java API,它定义了多层客户机/服务器系统的组件体系结构

EJB系统允许开发人员专注于模型的实际业务架构,而不是担心连接所有工作部件所需的无休止的编程和编码。这项任务留给EJB服务器供应商完成。开发人员只需设计(或购买)所需的EJB组件,并将它们安排在服务器上

因为EJB系统是用Java编写的,所以它们与平台无关。由于是面向对象的,它们可以在现有系统中实现,几乎不需要重新编译和配置

相关问题 更多 >