Python 3.x 表中具有相同索引列的多个条目
我有以下数据。注:对于FPEDAT和CUSIP的每个组合,都有多个STATPERPython 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
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 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等问题时发布所需的数据集。。。请相应地阅读和编辑你的文章。注意,我以后会这样做的。我已经更新了问题。非常感谢你的帮助