从日期重叠的数据框中删除行

2024-05-15 08:56:09 发布

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

我有一个名为finaldf的数据帧:

    Name            Date        Date met
0   6M EUR10s20s30s 2019-08-15  2021-05-20
1   6M EUR10s20s30s 2020-04-02  2021-05-20
2   6M EUR10s20s30s 2020-06-04  2021-05-20
3   6M EUR10s30s    2017-12-21  2018-01-11
4   6M EUR10s30s    2020-07-02  2021-05-20
5   6M EUR10s30s    2020-08-06  2021-05-20
6   6M EUR15s20s    2020-03-26  2021-05-20
7   6M EUR15s20s    2020-05-07  2021-05-20
8   6M EUR15s30s    2018-01-18  2018-01-26
9   6M EUR20s30s    2020-03-26  2021-05-20
10  6M EUR2s10s     2020-03-12  2020-03-13
11  6M EUR3s10s     2019-06-20  2019-07-12
12  6M EUR3s10s     2019-07-04  2019-07-11
13  6M EUR3s10s     2019-08-01  2019-08-07
14  6M EUR3s10s     2019-09-05  2019-09-12
15  6M EUR3s7s      2019-09-26  2019-10-03
16  6M EUR3s7s      2020-09-03  2020-09-18
17  6M EUR3s7s      2020-10-01  2020-10-20
18  6M EUR3s7s      2020-11-05  2021-05-20
19  6M EUR3s7s      2020-12-03  2021-01-27
20  6M EUR3s7s      2021-01-07  2021-01-28
21  6M EUR3s7s      2021-02-04  2021-02-19
22  6M EUR3s7s      2021-03-04  2021-03-29
23  6M EUR4s7s10s   2020-03-26  2020-04-22
24  6M EUR4s8s12s   2019-09-12  2021-05-20
25  6M EUR4s8s12s   2019-10-03  2019-12-27
26  6M EUR4s8s12s   2020-03-05  2020-03-10
27  6M EUR4s8s12s   2021-05-13  2021-05-20
28  6M EUR5s10s     2017-03-09  2017-03-10
29  6M EUR5s10s     2017-12-21  2018-01-11
30  6M EUR5s10s     2018-01-04  2018-01-12
31  6M EUR5s10s     2019-11-07  2019-12-30
32  6M EUR5s10s     2019-12-05  2021-05-20
33  6M EUR5s10s     2020-01-02  2020-03-12
34  6M EUR5s10s     2020-02-06  2020-03-12
35  6M EUR5s10s15s  2020-03-12  2020-04-02
36  6M EUR5s15s     2016-11-10  2016-11-11
37  6M EUR5s30s     2016-11-03  2016-11-11
38  6M EUR5s30s     2017-07-06  2017-07-20
39  6M EUR5s7s9s    2020-03-12  2021-05-20
40  6M EUR5s8s11s   2019-08-08  2021-05-20

我想检查Name列,看看该值是否存在于任何其他行中。如果是,我想检查Date是否不在另一行的DateDate met之间,其中Name中有相同的值。如果是,我想删除该行

例如,以第一行为例,检查Name是否存在于另一行中(它也存在于索引1和索引2)。检查Date是否在另外两行的DateDate met之间,因为它不是,所以保留它。使用相同的逻辑,索引1(第二行)处的行将被删除,因为Date位于第一行的DateDate met之间

我有以下代码:

Indexes = []

for i in range (0, len(finaldf)):       

    finaldf.index = np.arange(0, len(finaldf))
    Start = finaldf.iloc[i, 1]
    S = datetime.datetime.strptime(Start, '%Y-%m-%d')
    
    Prev_Start = finaldf.iloc[i-1,1]
    P_S  = datetime.datetime.strptime(Prev_Start, '%Y-%m-%d')
    
    Prev_End = finaldf.iloc[i-1,17]
    P_E = datetime.datetime.strptime(Prev_End, '%Y-%m-%d')
    
    Name = finaldf.iloc[i,0]
    Name1 = finaldf.iloc[i-1, 0]
    
    if Name == Name1:
        if P_S < S < P_E:
            Indexes.append(i)
finaldf = finaldf.drop(Indexes)

问题是它没有删除日期重叠的所有行。我必须运行代码几次,以确保删除所有重叠的行。有没有一种方法可以让我运行一次并删除所有重叠的行

编辑:

删除重叠日期后的所需输出:

    Name            Date    Date met
0   6M EUR10s20s30s 2019-08-15  2021-05-20
1   6M EUR10s30s    2017-12-21  2018-01-11
2   6M EUR10s30s    2020-07-02  2021-05-20
3   6M EUR15s20s    2020-03-26  2021-05-20
4   6M EUR15s30s    2018-01-18  2018-01-26
5   6M EUR20s30s    2020-03-26  2021-05-20
6   6M EUR2s10s     2020-03-12  2020-03-13
7   6M EUR3s10s     2019-06-20  2019-07-12
8   6M EUR3s10s     2019-08-01  2019-08-07
9   6M EUR3s10s     2019-09-05  2019-09-12
10  6M EUR3s7s      2019-09-26  2019-10-03
11  6M EUR3s7s      2020-09-03  2020-09-18
12  6M EUR3s7s      2020-10-01  2020-10-20
13  6M EUR3s7s      2020-11-05  2021-05-20
14  6M EUR4s7s10s   2020-03-26  2020-04-22
15  6M EUR4s8s12s   2019-09-12  2021-05-20
16  6M EUR5s10s     2017-03-09  2017-03-10
17  6M EUR5s10s     2017-12-21  2018-01-11
18  6M EUR5s10s     2019-11-07  2019-12-30
19  6M EUR5s10s     2020-01-02  2020-03-12
20  6M EUR5s10s15s  2020-03-12  2020-04-02
21  6M EUR5s15s     2016-11-10  2016-11-11
22  6M EUR5s30s     2016-11-03  2016-11-11
23  6M EUR5s30s     2017-07-06  2017-07-20
24  6M EUR5s7s9s    2020-03-12  2021-05-20

带有我也想要的列的Dataframe(基本上这是原始Dataframe):

    Name    Date    Rate    Z-score Resids  Carry+Roll  ADF_Test    Hurst   Stop loss   Target  Receiver    Payer   PC1 Weight  PC2 Weight  PC3 Weight  StopLoss Reached    Target Reached  Date met    PnL
0   6M EUR10s20s30s 2019-08-15  0.3551175421058592  -2.4809439286996393 -10.018125624361822 -0.5121038615712115 0.09023733749343249 -0.0285522176689668 0.30502691398405013 0.45529879834947745 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.006654543301378935
1   6M EUR10s20s30s 2020-04-02  0.29800036700415805 -2.1619132833019714 -6.402895986067242  -0.5121038615712115 0.047235326509030985    -0.030870766088494376   0.26598588707382187 0.36202932686483047 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.0637717184030801
2   6M EUR10s20s30s 2020-06-04  0.3047272487166206  -1.7869272721331058 -5.499809672863631  -0.5121038615712115 0.0429926365810223  -0.061623418495300904   0.27722820035230245 0.3597253454452569  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.05704483669061755
3   6M EUR10s30s    2017-12-21  0.3534846709777888  -1.3434219167513135 -5.192287730931621  -3.025210894920227  0.007761434187883128    -0.030592377901744926   0.3275232323231307  0.405407548287105   0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2018-01-11  -0.0400014599068772
4   6M EUR10s30s    2020-07-02  0.26710083686421243 -1.06363779416328   -10.281459965935966 -3.025210894920227  0.05792478106742115 0.004192391339835362    0.2156935370345326  0.36991543652357206 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.06328645161698726
5   6M EUR10s30s    2020-08-06  0.25627292165595233 -1.0991953022606602 -10.201881294988262 -3.025210894920227  0.06047556698943657 -0.03292149380374429    0.20526351518101102 0.35829173460583497 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.07411436682524736
6   6M EUR15s20s    2020-03-26  0.05383038432507725 -2.579707702223306  -5.9348820896207215 -0.9295692566922753 0.024354255157295314    0.12076476028757117 0.024155973876973644    0.11317920522128447 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.03493992464154627
7   6M EUR15s20s    2020-05-07  0.052296819894510314    -2.2167011797580365 -5.548714894398759  -0.9295692566922753 0.055074291702253246    0.09059365490462717 0.02455324542251652 0.1077839688384979  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.03647348907211321
8   6M EUR15s30s    2018-01-18  0.06126807220768704 -1.8251284286545288 -5.494758556607038  -2.186122773366783  0.07549548555692864 0.0677594419189068  0.03379427942465185 0.11621565777375742 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2018-01-26  -0.04184790559893692
9   6M EUR20s30s    2020-03-26  -0.07692904144801146    -2.924385801459267  -9.273676040230546  -1.2565535166745079 0.017709568482470708    0.14461354753673294 -0.1232974216491642 0.015807718954294003    0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.04926943502558276
10  6M EUR2s10s 2020-03-12  1.4223757026812986  1.2178041392636438  10.049739584842776  1.1943368445798352  0.08907845568540407 0.05264065083474774 1.4726244006055125  1.321878306832871   1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   1   2020-03-13  0.1110476579729931
11  6M EUR3s10s 2019-06-20  1.0728911741512022  3.033857255485046   8.563370284142074   0.5744542730912072  0.013984775847552516    0.0071297408872100865   1.1157080255719125  0.9872574713097815  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2019-07-12  -0.05153606976156522
12  6M EUR3s10s 2019-07-04  1.061665584000396   2.5721527365510664  7.538638483819055   0.5744542730912072  0.013556630900902379    0.028045941352964024    1.0993587764194912  0.9862791991622053  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2019-07-11  -0.04310960759119764
13  6M EUR3s10s 2019-08-01  1.0847660200101767  2.4328178794081876  7.572077623047621   0.5744542730912072  0.030117295239059646    0.055747134736908746    1.122626408125415   1.0090452437797006  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2019-08-07  -0.04040454065212784
14  6M EUR3s10s 2019-09-05  1.1557787699469992  2.8089304017939822  8.583348809222786   0.5744542730912072  0.08624635920780155 0.032976502100491134    1.1986955139931132  1.0699452818547714  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   1   2019-09-12  0.14754881969838762
15  6M EUR3s7s  2019-09-26  0.5875078922056753  0.9691504755535116  6.208696688182935   0.7162668793618265  0.09175905958605407 0.07744018594349462 0.61855137564659    0.525420925323846   1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2019-10-03  -0.03154732900883139
16  6M EUR3s7s  2020-09-03  0.5843087169695611  0.9183228875973894  5.2053715201964 0.7162668793618265  0.02696998395687082 0.037500437938909864    0.6103355745705431  0.5322550017675971  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2020-09-18  -0.026710290565652106
17  6M EUR3s7s  2020-10-01  0.6129284733369795  1.2573073092147253  6.295872503092465   0.7162668793618265  0.02789401779001527 0.040351081833919555    0.6444078358524419  0.5499697483060548  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2020-10-20  -0.03336626061236392
18  6M EUR3s7s  2020-11-05  0.6699325971564083  1.826486703665164   7.831859147105725   0.7162668793618265  0.04528062968149912 0.036988215711324664    0.709091892891937   0.591614005685351   1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  -0.07571602594701221
19  6M EUR3s7s  2020-12-03  0.6563671613079304  1.5588933412323431  6.7695757254579885  0.7162668793618265  0.040160454459497855    0.01885797458361572 0.6902150399352203  0.5886714040533505  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2021-01-27  -0.03485514528282618
20  6M EUR3s7s  2021-01-07  0.6643128407889901  1.5583405018485745  6.559059930851857   0.7162668793618265  0.04221731878975462 -0.009836223872358161   0.6971081404432494  0.5987222414804716  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2021-01-28  -0.03585514528282596
21  6M EUR3s7s  2021-02-04  0.7026387639026315  1.8980231259709701  7.407414816051072   0.7162668793618265  0.06555508729153918 -0.020838122840227413   0.7396758379828868  0.6285646157421207  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2021-02-19  -0.03772427358587005
22  6M EUR3s7s  2021-03-04  0.7265622127246159  2.053578259077592   7.8387618169381525  0.7162668793618265  0.09341192714662794 -0.011529208286405253   0.7657560218093066  0.6481745945552343  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2021-03-29  -0.03960164952777134
23  6M EUR4s7s10s   2020-03-26  0.15208838972574795 0.8394716772191768  6.486285321779395   0.38404771745329525 0.0906318192408806  0.048417637903754154    0.18451981633464493 0.087225536507954   1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   1   2020-04-22  0.06809748880096278
24  6M EUR4s8s12s   2019-09-12  0.2547948957611614  0.9972056052917206  5.468377271163667   0.7985286159543414  0.04905848719653141 0.05038585707039878 0.28213678211697973 0.20011112304952472 1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  -0.08574695035832186
25  6M EUR4s8s12s   2019-10-03  0.25865420986282833 1.1609428160905182  6.304343561884787   0.7985286159543414  0.07157652341208172 0.05005346751549387 0.29017592767225225 0.19561077424398046 1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   1   2019-12-27  0.06396634990063019
26  6M EUR4s8s12s   2020-03-05  0.24276274229003603 0.8845551945537232  5.658369454725162   0.7985286159543414  0.02787844658929541 0.01488828734118193 0.27105458956366185 0.1861790477427844  1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2020-03-10  -0.036303276794239614
27  6M EUR4s8s12s   2021-05-13  0.33556412763719057 1.802966202328959   5.438223978249058   0.7985286159543414  0.09361423135564811 -0.02900377453371789    0.36275524752843585 0.2811818878547 1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  -0.00497771848229267
28  6M EUR5s10s 2017-03-09  0.47031911925863185 -3.1398148384619518 -5.2951215366529745 -0.006651105415000913   0.013521128333408981    -0.01304607231311307    0.44384351157536694 0.5232703346251616  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2017-03-10  -0.04747723588016267
29  6M EUR5s10s 2017-12-21  0.4241173389861199  -3.1485790437205674 -5.755846853010843  -0.006651105415000913   0.031075063845439694    -0.04318498876956903    0.3953381047210657  0.48167580751622835 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2018-01-11  -0.0331351417112391
30  6M EUR5s10s 2018-01-04  0.4193857578199046  -2.8338133761708644 -5.719816399646713  -0.006651105415000913   0.07640562305776748 0.028028067568284666    0.39078667582167104 0.47658392181637177 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2018-01-12  -0.04790707893195678
31  6M EUR5s10s 2019-11-07  0.4366264511391338  -1.4748217409141113 -6.102783652752109  -0.006651105415000913   0.057626670486526005    -0.038487633432452206   0.40611253287537324 0.49765428766665487 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2019-12-30  -0.04285968610358848
32  6M EUR5s10s 2019-12-05  0.4192106816350715  -1.7258154910323342 -7.007278827261603  -0.006651105415000913   0.062427099545113454    -0.04517175681059255    0.38417428749876353 0.48928346990768756 0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  0.1079666807193636
33  6M EUR5s10s 2020-01-02  0.41181415786391373 -1.6825487903256093 -6.728352876635133  -0.006651105415000913   0.06663144963045009 -0.05244313425708268    0.37817239348073806 0.4790976866302651  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2020-03-12  -0.03666825020142139
34  6M EUR5s10s 2020-02-06  0.41441949868144945 -1.6101900314848328 -6.841241347394915  -0.006651105415000913   0.06540798602030823 -0.0837440559452311 0.3802132919444749  0.4828319121553986  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2020-03-12  -0.03927359101895711
35  6M EUR5s10s15s  2020-03-12  0.23839826987620893 0.888379629093766   5.1411607727597115  0.8324370161384431  0.011489277321607207    -0.029457186976140855   0.2641040737400075  0.18698666214861182 1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   1   2020-04-02  0.058022756264589054
36  6M EUR5s15s 2016-11-10  0.8171138057999755  -2.327477987339372  -5.148734593654529  -0.845739226968445  0.06472734670848343 0.0483347355578645  0.7913701328317029  0.8686011517365207  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2016-11-11  -0.03748790612000896
37  6M EUR5s30s 2016-11-03  0.9923611909878773  -1.9902732274787769 -5.327243342474162  -3.031862000335228  0.01127904302529342 0.06633443081433844 0.9657249742755065  1.045633624412619   0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   1   0   2016-11-11  -0.06109772238844258
38  6M EUR5s30s 2017-07-06  0.9688229799277854  -1.5438745397161435 -6.078495845308191  -3.031862000335228  0.004793457309803088    -0.006324155557797389   0.9384305007012445  1.0296079383808674  0   1   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   1   2017-07-20  0.06236826570028242
39  6M EUR5s7s9s    2020-03-12  0.08125020369110886 2.6577172474494115  5.80045156642956    0.11729642532226636 0.06972451502756954 0.02397106167883558 0.11025246152325666 0.02324568802681326 1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  -0.011610925923030715
40  6M EUR5s8s11s   2019-08-08  0.1596565724131399  3.175117254947791   6.056261435265576   0.6076868023949134  0.013737078310775913    0.050294226731910384    0.18993787958946778 0.09909395806048416 1   0   0.988301879778588   0.007891492023790062    0.0036497326590273086   0   0   2021-05-20  -0.007839814545810453

Tags: namedatetimedatestartmetilocfinaldfeur15s20s