Python 3.x 表中具有相同索引列的多个条目

Python 3.x 表中具有相同索引列的多个条目,python-3.x,csv,pandas,Python 3.x,Csv,Pandas,我有以下数据。注:对于FPEDAT和CUSIP的每个组合,都有多个STATPER CUSIP,STATPERS,NUMEST,FPEDATS 87482X10,20140417,4,20141231 87482X10,20140515,4,20141231 87482X10,20140619,5,20141231 12345678,20140717,3,20141231 12345678,20140814,5,20141231 87482X10,20140417,1,20151231 87482

我有以下数据。注:对于FPEDAT和CUSIP的每个组合,都有多个STATPER

CUSIP,STATPERS,NUMEST,FPEDATS
87482X10,20140417,4,20141231
87482X10,20140515,4,20141231
87482X10,20140619,5,20141231
12345678,20140717,3,20141231
12345678,20140814,5,20141231
87482X10,20140417,1,20151231
87482X10,20140515,2,20151231
87482X10,20140619,3,20151231
12345678,20140717,4,20151231
12345678,20140814,5,20151231
如果我将panda.read_csv与列=[“FPEDATS”,“CUSIP”]一起使用。我得到以下信息

                      STATPERS    NUMEST
CUSIP    FPEDATS                      
87482X10 2014-12-31 2014-04-17       4
         2014-12-31 2014-05-15       4
         2014-12-31 2014-06-19       5
12345678 2014-12-31 2014-07-17       3
         2014-12-31 2014-08-14       5
87482X10 2015-12-31 2014-04-17       1
         2015-12-31 2014-05-15       2
         2015-12-31 2014-06-19       3
12345678 2015-12-31 2014-07-17       4
         2015-12-31 2014-08-14       5
对于CUSIP和FPEDAT的每个组合,我感兴趣的是:

  • 我们可以只保留日期戳最大的那一行,删除其他行吗?(基本上通过最大的STATPERS进行过滤)
  • 我们可以为每个指数组合计算NUMEST值的平均值吗,或者保存它,或者用它替换当前数据
  • 例如,我们是否可以指定一个新属性,例如CUSIP和FPEDAT的每个组合所共有的“价格”
  • 对于2,我的意思是:

                          STATPERS    NUMEST
    CUSIP    FPEDATS
    12345678 2014-12-31 2014-08-14      5
             2015-12-31 2014-08-14      5
    87482X10 2014-12-31 2014-06-19      5
             2015-12-31 2014-06-19      3
    
    对于3个人,我的意思是我想要

                          STATPERS  NUMEST  Price
    CUSIP    FPEDATS                      
    87482X10 2014-12-31 2014-04-17       4   2
             2014-12-31 2014-05-15       4   2
             2014-12-31 2014-06-19       5   2
    12345678 2014-12-31 2014-07-17       3   4
             2014-12-31 2014-08-14       5   4
    87482X10 2015-12-31 2014-04-17       1   5
             2015-12-31 2014-05-15       2   5
             2015-12-31 2014-06-19       3   5
    12345678 2015-12-31 2014-07-17       4   7
             2015-12-31 2014-08-14       5   7
    
    当我只想在[(“CUSIP”、“FPEDATS”、“PRICE”)]中解析(作为元组列表或熊猫系列)?有没有一种巧妙的方法

    到目前为止,我想出的解决所有这些问题的唯一方法是在csv包中使用csv阅读器来读取csv,然后将所有内容返回到panda格式。我希望有一种更简单的方法

    更新:我设法用多重索引方法做了2个。基本上使用

    c = analyst_file.groupby(["CUSIP", "FPEDATS"])["STATPERS"].max()
    
    然后我们将这些索引写成元组列表并使用切片。
    仍然希望做得更流畅。

    假设我们有以下DF:

    In [193]: df
    Out[193]:
                          STATPERS  NUMEST
    CUSIP    FPEDATS
    87482X10 2014-12-31 2014-04-17       4
             2014-12-31 2014-05-15       4
             2014-12-31 2014-06-19       5
    12345678 2014-12-31 2014-07-17       3
             2014-12-31 2014-08-14       5
    87482X10 2015-12-31 2014-04-17       1
             2015-12-31 2014-05-15       2
             2015-12-31 2014-06-19       3
    12345678 2015-12-31 2014-07-17       4
             2015-12-31 2014-08-14       5
    
    我们可以做到以下几点:

    In [192]: df.groupby(level=[0,1]).agg({'STATPERS':'max','NUMEST':'mean'})
    Out[192]:
                          STATPERS    NUMEST
    CUSIP    FPEDATS
    12345678 2014-12-31 2014-08-14  4.000000
             2015-12-31 2014-08-14  4.500000
    87482X10 2014-12-31 2014-06-19  4.333333
             2015-12-31 2014-06-19  2.000000
    

    PS请详细说明CUSIP和FPEDAT的每个组合的共同点。-不清楚…

    谢谢您的回答,我已经更新了我的问题。我找到了groupby().max(),但这并没有完全奏效。也许我应该说得更清楚一些,你写的东西不完全是我想要的,尽管我也对你写的东西感兴趣。我的问题1和问题2是独立的问题。STATPERS对于CUSIP和FPEDAT的每个组合都是唯一的,因此STATPERS NUMEST CUSIP单独可以用来唯一地识别NUMEST。我想找到CUSIP和FPEDAT的每个组合的最大STATPERS。然后找到对应于每个CUSIP、FPEDAT和NUMEST的NUMEST。@Lost1。此外,强烈建议在询问Numpy/Pandas/TensorFlow等问题时发布所需的数据集。。。请相应地阅读和编辑你的文章。注意,我以后会这样做的。我已经更新了问题。非常感谢你的帮助