CSV file sorba rendezése (sor/oszlop vegyesen) pythonban

CSV file sorba rendezése (sor/oszlop vegyesen) pythonban
2019-10-27T17:44:37+01:00
2019-10-29T08:43:49+01:00
2022-12-06T04:41:52+01:00
FA19
Hatalmas (kb. 600 sor es 150 oszlop) táblázatot hogyan lehet automatikusan sorba rendezni, majd egy külön táblázatba kigyűjteni az egyforma sorokat?

Minden cellában egyetlen betű van (A-E), vagy üres a cella, utóbbiaknak kell jobbra illetve alulra kerülnie a "mind" oszlop szerinti sorrendben.

Azaz
1. Sorbarendezés "Mind" oszlop szerint (Z-A sorrend)
2. Max. "mind" csoportok sorbarendezése soronként

PL:
   1  2  3  4  5 Mind
1     C     D      2
2 A     A  E      3
3                     0
4 A  E     C     3

Sorrend:
   3 1  4  2 5 Mind
2 A A E       3
4    A  C E   3
1         D C   2     
3                   0

Milyen modullal lehet ezt a feladatot megoldani?

Azt már tudom, hogy a "set" nem használható.
Mutasd a teljes hozzászólást!

  • Nem értem mihez kellhet ilyen rendezés, és az elvet se teljesen értem.
    Tehát:
    Sorbarendezed Mind szerint (csökkenőben).
    Fogod az első x db sort, ahol a Mind értéke a max. (példában 3)
    Utána mit csinálsz? A példádban az üres hátrébb van, mint az A betű.
    Jól sejtem, hogy az eredeti sorrend marada második helyen? 8Tehát ha van 100 db 3-as értékű Mind csoportod, akkor ahogy maradt az első rendezé után, úgy marad továbbra is???
    Mert nekem úgy tünik, hogy Te soronként akarod berendezni második lépésben, és amelyikben a legtöbb A (B, C) betű szerepel, azt akarod feljebb húzni. Vagy nem?
    Lemodelleznéd, mit akarsz tulajdonképpen?
    Mutasd a teljes hozzászólást!
  • Igen, jól írtad.

    A probléma az, hogy a “Mind” oszlop szerinti csökkenő sorrendet csoportonként kell kezelni, azokhoz tartozó sorokba elvégezni a rendezést, balról jobbra az összes “A”, majd “B”, egészen “E”-ig, az üres cellák a végére jönnek.

    Sajnos néhány sort nem lehet optimálisan rendezni az oszlopok kötöttségek miatt.

    Ezt követően jön a következő csoport sor a “Mind” érték alapján, amíg az utolsó sorig érünk.

    A problémák nemcsak az oszlopok miatt vannak, hanem abból is fakadnak, hogy a már rendezett sorok véglegesítik az első néhány (majd egyre több) oszlopot, és így azokhoz már nem lehet nyúlni,
    ahogy a rendezett sorokhoz se.

    Csatolok egy példát a megoldásra. (R8.png)
    (A bal oldali a fontos, a jobb oldalon a bal oldali az alsó sorok szerint sorbarendezett oszlopokkal van.)

    Az is kérdés, hogy milyen modul kell még a Pythonhoz ehhez a feladathoz?
    pandas? numpy?
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • A példa alapján ha jól látom, az A-E ismétlődhet, a Mind oszlopod pedig azt mutatja, hogy hány db betű van a sorban.
    Ez azért fontos, mert akkor nem igaz az állítás, hogy először Mind alapján, majd Mind oszlopon belül rendezünk. Ugyanis ha ismétlődhet az A-E, akkor egyáltalán nem biztos, hogy az ismétlődő karaktereknél egy másik Mind értéknél nem tudsz jobban optimalizálni, ha felcseréled az előző Mind értéknél a felcserélhető oszlopokat (példádban ez a 13 és 12 oszlop lenne.)
    Azt írtad, hogy 600x150-es a táblád.
    Mennyi a Mind maximuma?
    Egy karakter hányszor ismétlődhet?

    Valószínűleg úgy kell ezt a problémát majd megfogni, hogy az egyes oszlopokhoz a sorrendjük alapján értéket rendelsz. Az A-E karakterekhez megint. E kettő szorzata kiad egy számot, e szerint kell rendezned, és a cél, hogy a szorzatösszeg maximális legyen.
    Kis táblánál egyszerű lenne, mert eltolnád tizedesjegyekkel az oszlopokat, és a szorzat maximum adná magát.
    Igazából az ismétlődés szól it nagyon közbe, mert így az ismétlődő karaktereknél azonos Mind mellett végig kell nézni minden lehetséges sorrendet.

    Szóval mik a pontos peremfeltételek?
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd