パンダのデータフレームの日付列に基づいて辞書のリストを並べ替えます

デンマーク語

以下に示すような入力リストとデータフレームがあります。

[{"type": "linear",
  "from": "2020-02-04T20:00:00.000Z",
  "to": "2020-02-03T20:00:00.000Z",
  "days":3,
  "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
  },
 {"type": "quadratic",
  "from": "2020-02-03T20:00:00.000Z",
  "to": "2020-02-10T20:00:00.000Z",
  "days":3,
  "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
  },
 {"type": "polynomial",
  "from": "2020-02-05T20:00:00.000Z",
  "to": "2020-02-03T20:00:00.000Z",
  "days":3,
  "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
  }]

df:

Date                t_factor     
2020-02-01             5             
2020-02-02             23              
2020-02-03             14           
2020-02-04             23
2020-02-05             23  
2020-02-06             23          
2020-02-07             30            
2020-02-08             29            
2020-02-09             100
2020-03-10             38
2020-03-11             38               
2020-03-12             38                    
2020-03-13             70           
2020-03-14             70 

ステップ1:辞書の「from」キーの値に基づいてリストを並べ替えます

[
 {"type": "quadratic",
      "from": "2020-02-03T20:00:00.000Z",
      "to": "2020-02-10T20:00:00.000Z",
      "days":3,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },
{"type": "linear",
      "from": "2020-02-04T20:00:00.000Z",
      "to": "2020-02-03T20:00:00.000Z",
      "days":3,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },
     {"type": "polynomial",
      "from": "2020-02-05T20:00:00.000Z",
      "to": "2020-02-03T20:00:00.000Z",
      "days":3,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      }]

ステップ2:dfの最小日付として「from」キーの値を持つ辞書を追加し、「to」はソートされたリストの最初の辞書の「from」日付である必要があります。"days" = 0、 "coef":[0.1,0.1,0.1,0.1,0.1,0.1]。

{"type": "df_first",
      "from": "2020-02-01T20:00:00.000Z",
      "to": "2020-02-03T20:00:00.000Z",
      "days":0,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      }

ステップ3:「from」キーの値がdfの最小日付の7日後である辞書を追加し、「to」はfromの1日後でなければなりません。

{"type": "df_mid",
      "from": "2020-02-08T20:00:00.000Z",
      "to": "2020-02-09T20:00:00.000Z",
      "days":0,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      }

ステップ4:dfの最大日付として「from」キーの値を持つ辞書を追加し、「to」は「from」と同じである必要があります。

{"type": "df_last",
      "from": "2020-02-14T20:00:00.000Z",
      "to": "2020-02-14T20:00:00.000Z",
      "days":0,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      }

手順5:「開始」日付に基づいてすべての辞書を並べ替えます。

期待される出力:

[{"type": "df_first",
      "from": "2020-02-01T20:00:00.000Z",
      "to": "2020-02-03T20:00:00.000Z",
      "days":0,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },
     {"type": "quadratic",
      "from": "2020-02-03T20:00:00.000Z",
      "to": "2020-02-10T20:00:00.000Z",
      "days":3,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },
{"type": "linear",
      "from": "2020-02-04T20:00:00.000Z",
      "to": "2020-02-03T20:00:00.000Z",
      "days":3,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },

     {"type": "polynomial",
      "from": "2020-02-05T20:00:00.000Z",
      "to": "2020-02-03T20:00:00.000Z",
      "days":3,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },
{"type": "df_mid",
      "from": "2020-02-08T20:00:00.000Z",
      "to": "2020-02-09T20:00:00.000Z",
      "days":0,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      },

{"type": "df_last",
      "from": "2020-02-14T20:00:00.000Z",
      "to": "2020-02-14T20:00:00.000Z",
      "days":0,
      "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
      }
]

ステップ6:

各辞書の「to」値を次の辞書の「from」値に置き換えます。最後の辞書の「to」値はそのままです。

期待される最終出力:

[{"type": "df_first",
          "from": "2020-02-01T20:00:00.000Z",
          "to": "2020-02-03T20:00:00.000Z",
          "days":0,
          "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
          },
         {"type": "quadratic",
          "from": "2020-02-03T20:00:00.000Z",
          "to": "2020-02-04T20:00:00.000Z",
          "days":3,
          "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
          },
    {"type": "linear",
          "from": "2020-02-04T20:00:00.000Z",
          "to": "2020-02-05T20:00:00.000Z",
          "days":3,
          "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
          },
    
         {"type": "polynomial",
          "from": "2020-02-05T20:00:00.000Z",
          "to": "2020-02-08T20:00:00.000Z",
          "days":3,
          "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
          },
    {"type": "df_mid",
          "from": "2020-02-08T20:00:00.000Z",
          "to": "2020-02-14T20:00:00.000Z",
          "days":0,
          "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
          },
    
    {"type": "df_last",
          "from": "2020-02-14T20:00:00.000Z",
          "to": "2020-02-14T20:00:00.000Z",
          "days":0,
          "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
          }
    ]
シュバムシャルマ

機能の定義add_dct辞書のリストとして引数をとりますlst_type_from_toとに、新しい辞書を追加しますlst

dmin, dmax = df['Date'].min(), df['Date'].max()
def add_dct(lst, _type, _from, _to):
    lst.append({
        'type': _type,
        'from': _from if isinstance(_from, str) else _from.strftime("%Y-%m-%dT20:%M:%S.000Z"),
        'to': _to if isinstance(_to, str) else _to.strftime("%Y-%m-%dT20:%M:%S.000Z"),
        'days': 0,
        "coef":[0.1,0.1,0.1,0.1,0.1,0.1]
    })

predefined要件に応じて、次の手順に従います。

# STEP 1
lst = sorted(lst, key=lambda d: pd.Timestamp(d['from']))

# STEP 2
add_dct(lst, 'df_first', dmin, lst[0]['from'])

# STEP 3
add_dct(lst, 'df_mid', dmin + pd.Timedelta(days=7), dmin + pd.Timedelta(days=8))

# STEP 4
add_dct(lst, 'df_last', dmax, dmax)

# STEP 5
lst = sorted(lst, key=lambda d: pd.Timestamp(d['from']))

結果:

[{'type': 'df_first',
  'from': '2020-02-01T20:00:00.000Z',
  'to': '2020-02-03T20:00:00.000Z',
  'days': 0,
  'coef': [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]},
 {'type': 'quadratic',
  'from': '2020-02-03T20:00:00.000Z',
  'to': '2020-02-10T20:00:00.000Z',
  'days': 3,
  'coef': [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]},
 {'type': 'linear',
  'from': '2020-02-04T20:00:00.000Z',
  'to': '2020-02-03T20:00:00.000Z',
  'days': 3,
  'coef': [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]},
 {'type': 'polynomial',
  'from': '2020-02-05T20:00:00.000Z',
  'to': '2020-02-03T20:00:00.000Z',
  'days': 3,
  'coef': [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]},
 {'type': 'df_mid',
  'from': '2020-02-08T20:00:00.000Z',
  'to': '2020-02-09T20:00:00.000Z',
  'days': 0,
  'coef': [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]},
 {'type': 'df_last',
  'from': '2020-03-14T20:00:00.000Z',
  'to': '2020-03-14T20:00:00.000Z',
  'days': 0,
  'coef': [0.1, 0.1, 0.1, 0.1, 0.1, 0.1]}]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パンダ:複数の列に基づいてデータフレームを並べ替えます

分類Dev

重複した値を持つリストに基づいてパンダのデータフレームを並べ替えます

分類Dev

列に基づいてパンダデータフレームデータのデータを配置/並べ替えます

分類Dev

列名に基づいてパンダデータフレームの列を並べ替える

分類Dev

列の値に基づいてパンダデータフレームを並べ替える

分類Dev

現在の並べ替え位置と別の列に基づいてパンダデータフレーム列を作成する方法はありますか?

分類Dev

パンダは外部シリーズに基づいてデータフレームを並べ替えます

分類Dev

リストに基づいてデータフレームを並べ替える方法は?パンダ

分類Dev

パンダの別のデータフレームの列に基づいてデータフレームを並べ替える方法は?

分類Dev

リストに基づいて列を並べ替えた後、データフレーム内の別の列を並べ替える

分類Dev

特定の順序に基づいてパンダのデータフレームを並べ替える

分類Dev

別のデータフレーム値に基づいてパンダの値を並べ替える

分類Dev

条件に基づいてパンダデータフレームの行値を並べ替える方法は?

分類Dev

Pandasデータフレームのリストに基づいてインデックス付きの行を並べ替える方法

分類Dev

ヘッダーのfloatサフィックスに基づいてデータフレームの列を並べ替えます

分類Dev

正と負の値に基づいてデータフレーム列の値を並べ替えますか?

分類Dev

一意の値に基づいて2列のデータフレームを並べ替えます

分類Dev

列内の固有の値に基づいてデータフレームを並べ替えます

分類Dev

パンダのデータフレームで日付を文字列形式で並べ替えますか?

分類Dev

カスタム階層に基づいたパンダデータフレームの並べ替えと抽出

分類Dev

データフレーム内の列を連結し、番号に基づいて並べ替えます

分類Dev

行ごとのリスト値に基づいてPandasデータフレームを並べ替える

分類Dev

パンダ:ブールリスト/辞書に基づいてデータフレーム列を置き換えます

分類Dev

Pandasデータフレームグループを最小インデックス番号で並べ替えてから、3番目の列に基づいてグループ内の他のすべての列を並べ替えます

分類Dev

別のカスタム順序の列に基づいて、データフレーム内の列のペアを並べ替えます

分類Dev

変換せずに文字列の日付でパンダのデータフレームを並べ替える

分類Dev

列の日付に基づいてデータを並べ替える

分類Dev

特定のインデックスに基づいてマルチインデックスパンダデータフレームを並べ替える

分類Dev

別の列に基づいて、パンダデータフレームの列のすべてのリストから要素を削除します

Related 関連記事

  1. 1

    パンダ:複数の列に基づいてデータフレームを並べ替えます

  2. 2

    重複した値を持つリストに基づいてパンダのデータフレームを並べ替えます

  3. 3

    列に基づいてパンダデータフレームデータのデータを配置/並べ替えます

  4. 4

    列名に基づいてパンダデータフレームの列を並べ替える

  5. 5

    列の値に基づいてパンダデータフレームを並べ替える

  6. 6

    現在の並べ替え位置と別の列に基づいてパンダデータフレーム列を作成する方法はありますか?

  7. 7

    パンダは外部シリーズに基づいてデータフレームを並べ替えます

  8. 8

    リストに基づいてデータフレームを並べ替える方法は?パンダ

  9. 9

    パンダの別のデータフレームの列に基づいてデータフレームを並べ替える方法は?

  10. 10

    リストに基づいて列を並べ替えた後、データフレーム内の別の列を並べ替える

  11. 11

    特定の順序に基づいてパンダのデータフレームを並べ替える

  12. 12

    別のデータフレーム値に基づいてパンダの値を並べ替える

  13. 13

    条件に基づいてパンダデータフレームの行値を並べ替える方法は?

  14. 14

    Pandasデータフレームのリストに基づいてインデックス付きの行を並べ替える方法

  15. 15

    ヘッダーのfloatサフィックスに基づいてデータフレームの列を並べ替えます

  16. 16

    正と負の値に基づいてデータフレーム列の値を並べ替えますか?

  17. 17

    一意の値に基づいて2列のデータフレームを並べ替えます

  18. 18

    列内の固有の値に基づいてデータフレームを並べ替えます

  19. 19

    パンダのデータフレームで日付を文字列形式で並べ替えますか?

  20. 20

    カスタム階層に基づいたパンダデータフレームの並べ替えと抽出

  21. 21

    データフレーム内の列を連結し、番号に基づいて並べ替えます

  22. 22

    行ごとのリスト値に基づいてPandasデータフレームを並べ替える

  23. 23

    パンダ:ブールリスト/辞書に基づいてデータフレーム列を置き換えます

  24. 24

    Pandasデータフレームグループを最小インデックス番号で並べ替えてから、3番目の列に基づいてグループ内の他のすべての列を並べ替えます

  25. 25

    別のカスタム順序の列に基づいて、データフレーム内の列のペアを並べ替えます

  26. 26

    変換せずに文字列の日付でパンダのデータフレームを並べ替える

  27. 27

    列の日付に基づいてデータを並べ替える

  28. 28

    特定のインデックスに基づいてマルチインデックスパンダデータフレームを並べ替える

  29. 29

    別の列に基づいて、パンダデータフレームの列のすべてのリストから要素を削除します

ホットタグ

アーカイブ