【问题标题】:How to select columns keeping a reference column pandas dataframe如何选择保留参考列熊猫数据框的列
【发布时间】:2020-12-01 13:58:11
【问题描述】:

我有一个带有坐标的文件,其中 leftend 对应于坐标的开头,leftend 对应于坐标的结尾,我想选择四乘四列,然后遍历它们。

    seq0_leftend    seq0_rightend   seq1_leftend    seq1_rightend   seq2_leftend    seq2_rightend   seq3_leftend    seq3_rightend   seq4_leftend    seq4_rightend   seq5_leftend    seq5_rightend   seq6_leftend    seq6_rightend   seq7_leftend    seq7_rightend   seq8_leftend    seq8_rightend   seq9_leftend    seq9_rightend   seq10_leftend   seq10_rightend  seq11_leftend   seq11_rightend  seq12_leftend   seq12_rightend
    3   49323   1   49174   1518    49674   3   50359   2   49009   2   48352   -1543588    -1591853    1   48666   1   49174   1   49174   1   49174   2   49056   9   49067
    49324   53153   49175   52346   49675   53440   50360   53538   49010   52147   48353   49706   -1485545    -1491156    48667   48933   49175   52346   49175   52347   49175   52346   49057   54245   49068   54256
    53291   345000  52347   349343  53444   348462  53539   346300  52151   345283  49711   335699  -1202886    -1485498    48938   337314  52347   349345  52348   349348  52347   349348  375282  671060  375293  671085
    345370  359920  349344  367075  348491  363262  346316  364772  345284  363532  335883  353652  -1188127    -1202885    337327  355189  349346  367078  349349  367080  349349  367081  -1321555    -1338524    -1321593    -1338561
    360047  442960  -1071684    -1158077    363311  447357  366041  448755  363533  447918  353727  436057  -1103916    -1188126    355247  439073  -1071700    -1158091    -1071701    -1158093    -1071701    -1158093    -1236985    -1321554    -1237022    -1321592
    443422  476155  479887  513355  447870  479607  448756  481778  447919  519614  436572  467437  -1071048    -1103915    439610  473101  479891  513359  479893  513360  479894  513362  -1203162    -1236984    -1203199    -1237021
    479292  500050  513356  537562  479865  503165  482233  505480  520280  542846  -830511 -853711 646230  670350  473106  496671  513360  537569  513361  537570  513363  537572  789047  813052  789070  813075
    500057  500747  537563  538046  503169  503636  505481  505974  542847  543320  -830037 -830510 -715996 -716669 496676  497140  537570  538053  537571  538054  537573  538056  813053  813361  813076  813384
    501135  509258  538047  546275  503641  511802  505975  512844  543328  551473  -819445 -830036 704220  712268  497164  505321  538054  546282  538055  546283  538057  546285  813362  821530  813385  821553
    509259  530605  546276  567053  511805  533212  512845  535429  551474  572730  -818536 -819444 -683027 -704112 505329  526076  546283  567060  546284  567061  546286  567063  821531  842216  821554  842239
    543487  702723  579787  740268  545916  707252  548124  706754  585449  748567  -661643 -818531 716677  877528  538794  694900  579794  740277  579795  740278  579797  740278  855412  1015863 855435  1015899
    702815  713243  -740269 -750971 -707435 -718140 -706755 -717469 -748568 -759305 650695  661642  -877529 -888261 -695083 -705816 -740278 -750982 -740279 -750983 -740279 -750983 -1015864    -1026540    -1015900    -1026577
    713324  737782  750972  775163  718141  741635  717470  742344  759306  783047  -627020 -650694 888262  913438  705817  730012  750983  775174  750984  775175  750984  775175  1026541 1050802 1026578 1050840
    737787  741051  -775164 -779082 742677  744531  -742345 -746420 -783048 -786865 623835  626449  -913674 -917094 731618  735986  -775175 -779093 -775176 -779094 -775176 -779094 1050803 1054373 1050841 1054411
    741586  743572  779083  781157  746293  748444  746425  748338  786866  789000  -621749 -623834 917095  919261  -730015 -730923 779094  781168  779095  781169  779095  781169  1054374 1056527 1054412 1056563
    743586  893621  781158  932666  748455  898390  748339  900404  789001  930538  -467439 -621748 919262  1071045 736926  886131  781169  932679  781170  932680  781170  932680  1056528 1203161 1056564 1203198
    894346  1011981 932667  1045860 898392  1009758 900770  1014909 930578  1041158 854679  968085  -532499 -646211 886171  993898  932680  1045877 932681  1045878 932681  1045878 -676946 -789046 -676971 -789069
    1013263 1014971 -1045861    -1048517    1009889 1011580 -1014910    -1017559    1041159 1043329 -968409 -969887 -530328 -532498 993926  995331  -1045878    -1048533    -1045879    -1048535    -1045879    -1048535    672968  676945  672993  676970
    1065245 1135571 -367076 -438530 1021406 1090482 1034515 1143468 1064422 1133672 994379  1064143 -374633 -444045 1017531 1086917 -367079 -438533 -367081 -438535 -367082 -438536 1366922 1437109 1366967 1437154
    1135589 1188428 1158078 1207928 1090491 1138785 1143483 1193098 1133673 1183810 1064151 1113473 -324683 -374632 1086931 1136855 1158092 1207942 1158094 1207944 1158094 1207944 1437110 1486898 1437155 1486942
    1189447 1290244 1208491 1311998 1139274 1244149 1193663 1300012 1184321 1290731 1114038 1216771 -218899 -324172 1137224 1240436 1208505 1312013 1208507 1312016 1208507 1312017 -107023 -211490 -107034 -211500
    1290277 1331250 1311999 1352040 1244179 1284789 1300013 1340284 1290732 1331611 1216772 1257577 -178718 -218898 1240450 1281398 1312014 1352055 1312017 1352059 1312018 1352059 -310289 -352622 -310306 -352633
    1331255 1340616 1352041 1363108 -1289098    -1298516    1340285 1356178 1331612 1342551 1257578 1266984 -169202 -178717 1281399 1292450 1352056 1363123 1352060 1363127 1352060 1363127 -299322 -310288 -299339 -310305
    1340617 1342429 1363109 1364778 -1287292    -1289097    1356536 1356836 1342552 1344353 1266985 1268823 -167398 -169201 -1292451    -1293658    1363124 1364793 1363128 1364797 1363128 1364797 298104  299321  298121  299338
    1342430 1344055 1364779 1366411 -1285678    -1287291    1357410 1358511 1344354 1345983 1268824 1270441 -165766 -167397 1293659 1294772 1364794 1366426 1364798 1366430 1364798 1366430 -296988 -298103 -297005 -298120
    1344056 1388556 1366412 1411830 1298523 1343947 1358512 1402156 1345984 1390298 1270442 1321936 -121371 -165765 1294773 1341430 1366427 1411846 1366431 1411850 1366431 1411849 -254325 -296987 -254334 -297004
    1388557 1421150 1411831 1446790 1343948 1376919 1402157 1435209 1391235 1453604 1321937 1355327 1491500 1523369 1341431 1373757 1411847 1446806 1411851 1446810 1411850 1446809 54246   86252   54257   86263
    1421650 1441217 1470663 1487757 1376921 1394486 1435211 1452474 1453605 1470937 1355336 1372162 1523370 1543337 1373759 1391067 1470677 1487771 1470683 1487777 1470682 1487776 86253   107022  86264   107033
    1441218 1449681 1487758 1497319 1394487 1404037 1452475 1460819 1470940 1480512 1372163 1381763 -111779 -121370 1391068 1399727 1487772 1497333 1487778 1497339 1487777 1497338 -246048 -254324 -246057 -254333
    1449729 1455304 -1497320    -1502983    -1404038    -1409703    -1460820    -1466452    -1480513    -1486205    -1381764    -1387428    106172  111777  -1399728    -1405422    -1497334    -1502997    -1497340    -1503003    -1497339    -1503003    240386  246047  240395  246056
    1455695 1462598 1502984 1510737 1409704 1417511 1466453 1473503 1486206 1493301 1387429 1393637 -100005 -106171 1405423 1412998 1502998 1510751 1503004 1510758 1503004 1510757 -234667 -240385 -234676 -240394
    1462602 1476329 1510738 1524437 1417514 1430978 1473504 1487968 1493302 1507726 1393802 1407205 -85707  -100004 1413068 1426890 1510752 1524451 1510759 1524458 1510758 1524459 1487418 1499800 1487462 1499846
    1476352 1559315 1524438 1609150 -1435537    -1520032    1487969 1573454 1507727 1594207 1407206 1490156 -1  -85706  1426891 1512134 1524452 1609165 1524459 1609172 1524460 1609173 1499801 1580975 1499847 1581020
    1559316 1564211 1609151 1613435 -1431657    -1435536    1573455 1577271 1594208 1598754 1490157 1493974 -1670026    -1673997    1512135 1516611 1609166 1613450 1609173 1613457 1609174 1613458 1580976 1585198 1581021 1585243
    1564609 1584820 -1449916    -1470662    1521126 1541930 1577553 1595980 1599277 1617665 1494815 1513521 -1650367    -1668897    1551356 1565980 -1449930    -1470676    -1449936    -1470682    -1449935    -1470681    1585199 1601290 1585244 1601336
    1585004 1588300 -1446791    -1449915    1542603 1545493 1595985 1599915 -1618658    -1621617    1520939 1524863 -1646465    -1649476    -1567570    -1570278    -1446807    -1449929    -1446811    -1449935    -1446810    -1449934    1601291 1604503 1601337 1604549
    1590201 1612857 -1615848    -1637602    -1547024    -1568685    -1601429    -1623248    1621908 1644963 -1526377    -1548123    -1623078    -1644955    1570608 1593895 -1615863    -1637617    -1615870    -1637624    -1615871    -1637625    1606015 1629044 1606061 1629090
    1612858 1641600 1637603 1665500 1568686 1596364 1623249 1650570 1644964 1672228 1548124 1574385 -1594016    -1621316    1593896 1623074 1637618 1665516 1637625 1665523 1637626 1665525 1629045 1658266 1629091 1658312

1641601 1643824 1665501 1667867 1   1487    1650571 1652917 1672229 1673780 1574386 1576758 -1591856    -1594015    1623075 1624615 1665517 1667883 1665524 1667890 1665526 1667892 1658267 1660425 1658313 1660469

这个想法是我总是从 seq0_rightend 中提取 seq0_leftend 并像这样添加以下列:

    seq0_leftend    seq0_rightend   seq1_leftend    seq1_rightend
    7   107088  1   106766
    107089  108940  106767  108619
    108941  362759  108620  355933
    362760  500485  355934  488418
    500486  509260  488419  497151
    509261  702736  497152  690112
    702737  713288  690113  700692
    713290  737705  700693  721993
    737706  741383  721994  722347
    741384  977732  722348  946296
    977733  1014940 946297  977714
    1014941 1021996 977715  985708
    1021999 1024008 -985709 -990725
    1058836 1113118 991992  1042023

seq0_leftend    seq0_rightend       seq2_leftend    seq2_rightend   
7   107088      1   109407  
107089  108940      362514  364315  
108941  362759      109408  362513  
362760  500485      364450  504968  
500486  509260      -504969 -515995 
509261  702736      515996  671291  
702737  713288      -671295 -682263 
713290  737705      682264  707010  
737706  741383      -707011 -709780 
741384  977732      709781  934501  
977733  1014940     973791  1015417 
1014941 1021996     -961703 -973790 
1021999 1024008     948955  961702  
1058836 1113118     1015418 1069976 

我尝试以下方法,但它不包含 seq0_leftend seq0_rightend 引用:

for i in range(0, len(df_lcbs.columns), 4):
    paired= df_lcbs.iloc[:, i:i+4]
    df_paired= pd.DataFrame(paired)
    print(df_paired.head())

结果:

seq0_leftend  seq0_rightend  seq1_leftend  seq1_rightend
0             3          49323             1          49174
1         49324          53153         49175          52346
2         53291         345000         52347         349343
3        345370         359920        349344         367075
4        360047         442960      -1071684       -1158077
   seq2_leftend  seq2_rightend  seq3_leftend  seq3_rightend
0          1518          49674             3          50359
1         49675          53440         50360          53538
2         53444         348462         53539         346300
3        348491         363262        346316         364772
4        363311         447357        366041         448755

【问题讨论】:

  • 你想总是先用 00 的冷杉然后是其他两个数字?
  • 是的,我一直希望 seq0_leftend seq0_rightend 作为第一列和第二列,seq0_leftend seq0_rightend seq1_leftend seq1_rightend seq0_leftend seq0_rightend
  • 是的,我明白你的意思

标签: python pandas dataframe loops for-loop


【解决方案1】:
for i in range(2,26,2):
    print(df.iloc[:,np.r_[0:2,i:i+2]])

#output

  seq0_leftend  seq0_rightend  seq1_leftend  seq1_rightend
0             3          49323             1          49174
1         49324          53153         49175          52346
2         53291         345000         52347         349343
3        345370         359920        349344         367075
4        360047         442960      -1071684       -1158077
   seq0_leftend  seq0_rightend  seq2_leftend  seq2_rightend
0             3          49323          1518          49674
1         49324          53153         49675          53440
2         53291         345000         53444         348462
3        345370         359920        348491         363262
4        360047         442960        363311         447357
   seq0_leftend  seq0_rightend  seq3_leftend  seq3_rightend
0             3          49323             3          50359
1         49324          53153         50360          53538
2         53291         345000         53539         346300
3        345370         359920        346316         364772
4        360047         442960        366041         448755
   seq0_leftend  seq0_rightend  seq4_leftend  seq4_rightend

请随意使用。

np.r_ 是一个来自 numpy 的函数,能够对索引进行多切片。

我修好了,我只是想找出正确的模式。

这应该可以完成工作。

【讨论】:

  • 非常感谢@ombk,它几乎完美地解决了我的问题。但是,问题是我有不同数量的坐标的不同文件,因此范围 (2,26,2) 不适用于我的其他文件,我希望应用我的任何坐标文件。
  • 将 26 转换为 data.shape[1],它将提供任何数据框大小:p
  • 肯定总是有偶数,因此公式总是适用于偶数
猜你喜欢
  • 2019-06-29
  • 1970-01-01
  • 2020-09-15
  • 2016-12-17
  • 2019-10-14
  • 1970-01-01
  • 2021-08-08
  • 2013-02-13
  • 2019-01-12
相关资源
最近更新 更多