2
          day         city  temperature  windspeed   event

        2017-01-01  new york           32          6    Rain
        2017-01-02  new york           36          7   Sunny
        2017-01-03  new york           28         12    Snow
        2017-01-04  new york           33          7   Sunny
        2017-01-05  new york           31          7    Rain
        2017-01-06  new york           33          5   Sunny
        2017-01-07  new york           27         12    Rain
        2017-01-08  new york           23          7  Rain
        2017-01-01    mumbai           90          5   Sunny
        2017-01-02    mumbai           85         12     Fog
        2017-01-03    mumbai           87         15     Fog
        2017-01-04    mumbai           92          5    Rain
        2017-01-05    mumbai           89          7   Sunny
        2017-01-06    mumbai           80         10     Fog
        2017-01-07    mumbai           85         9     Sunny
        2017-01-08    mumbai           89          8    Rain
        2017-01-01     paris           45         20   Sunny
        2017-01-02     paris           50         13  Cloudy
        2017-01-03     paris           54          8  Cloudy
        2017-01-04     paris           42         10  Cloudy
        2017-01-05     paris           43         20   Sunny
        2017-01-06     paris           48         4  Cloudy
        2017-01-07     paris           40          14  Rain
        2017-01-08     paris           42         15  Cloudy
        2017-01-09     paris           53         8  Sunny

上記は.txtファイルを示しています。

私の目標は、すべての都市を含む、できるだけ均等に分散された 4 つのグループを作成することです。つまり、各グループには「ニューヨーク」、「ムンバイ」、「パリ」があります。

25個のデータがあるので、3グループで6行、1グループで7行になります。

私が今考えていることは、データはすでに都市ごとにソートされているため、テキストファイルを行ごとに読み取ることができ、行ごとにそれを 4 つのグループ (G1-G4) に交互に追加することです。パターン。つまり、最初の行は G1 に追加され、2 行目は G2 に、3 行目は G3 に、4 行目は G4 に、5 行目は G1 に追加され、6 行目は G2 に追加されます。これにより、すべてのグループが 3 つの都市すべてを含むことが保証されます。

このようにコーディングすることは可能ですか?

期待される結果:

G1: 行/行 1、行 5、行 9、

G2: 行 2、行 6、行 10、

G3: 行 3、行 7、行 11、

G4: 4 行目、8 行目、12 行目など。

4

3 に答える 3

1

簡単に説明するために行インデックスのみを保持します

rows = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]

次に、スライスを使用できます

G1, G2, G3, G4 = [rows[i::4] for i in range(4)]

結果は

G1 == [1, 5, 9, 13, 17, 21, 25]
G2 == [2, 6, 10, 14, 18, 22]
G3 == [3, 7, 11, 15, 19, 23]
G4 == [4, 8, 12, 16, 20, 24]]
于 2018-08-08T02:57:58.727 に答える