上限と下限に基づいてパンダのデータフレームに値を割り当てる

エイドリアンY

私は最近この問題に遭遇しましたが、残念ながら、Pythonに関する私の知識は解決策を考えるには不十分です。

私がシドニー-メルボルンルートのロジスティクスマネージャーであり、ルートのそれぞれの移動時間とともに、次の輸送モードを自由に使用できるとします。

df1 = pd.DataFrame()

Index    Transportation    Time
1        Plane             1:00:00
2        Rail              3:00:00
3        Truck             5:00:00
4        Bus               7:00:00
5        Ferry             9:00:00

さらに、私は彼らが彼らの配達を待つことをいとわない時間についての彼らの好みと、彼らが速い配達のために保険料を払うことに同意する特定のカットオフを持ったクライアントのリストを持っています。

df2 = pd.DataFrame()

Index    Client    PremiumTime    MaxTime
1        Alan      1:00:00        3:00:00
2        Bernard   2:00:00        5:00:00
3        Cassie    2:00:00        7:00:00
4        Donald    3:00:00        7:00:00
5        Elijah    5:00:00        9:00:00

このシナリオでは、各トランスポートモードは1つのクライアントにのみ割り当てることができ、を想定していlen(df1) == len(df2)ます。ここで私が達成しようとしているのは、すべてのクライアントに1つのトランスポートモードを割り当てて、クライアントを超えないようMaxTimeにすると同時にPremiumTime、できるだけ多くのクライアントを満足させるようにすることです。

可能な望ましい出力のサンプル:

Index    Client    PremiumTime    MaxTime    Transportation
1        Alan      1:00:00        3:00:00    Plane
2        Bernard   2:00:00        5:00:00    Truck
3        Cassie    2:00:00        7:00:00    Bus
4        Donald    3:00:00        7:00:00    Rail
5        Elijah    5:00:00        9:00:00    Ferry

私は達成するために管理することを注意PremiumTimeの両方のためにAlanDonald、この例では最良のシナリオです。

どんな助けでも、または正しい方向に微調整することは大いにありがたいです。ありがとう!

アンキー

IIUC、使用:

d=df1.set_index('Time')['Transportation']
#create a mapping for time and transport
cond=df2.PremiumTime.isin(df1.Time)
#check if PremiumTime from df2 is there in time in df1

次にnp.where()、条件付きマッピングに使用します

df2['Transportation']=np.where(cond,df2.PremiumTime.map(d),df2.MaxTime.map(d))
print(df2)

出力

        Client PremiumTime  MaxTime Transportation
Index                                             
1         Alan     1:00:00  3:00:00          Plane
2      Bernard     2:00:00  5:00:00          Truck
3       Cassie     2:00:00  7:00:00            Bus
4       Donald     3:00:00  7:00:00           Rail
5       Elijah     5:00:00  9:00:00          Truck #note the diff in this row output

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

パンダデータフレーム:列の値に基づいて整数値を割り当てる

分類Dev

Rの目標値の下限と上限に基づいて2つのデータフレームを結合する

分類Dev

条件に基づいてパンダデータフレームの行のグループに一意の値を割り当てる方法は?

分類Dev

パンダの条件に基づいてデータフレームのサブセットの列に値を割り当てる方法は?

分類Dev

条件に基づいてパンダデータフレームの複数の列に値を割り当てる方法

分類Dev

パンダ、iterrowの使用を回避するにはどうすればよいですか(別のデータフレームの値に基づいてデータフレームの新しい列に値を割り当てる方法)

分類Dev

文字列の状態に基づいてパンダのデータフレーム列に値を割り当てます

分類Dev

パンダは、別の列の値に基づいて列レベルを追加することにより、データフレームを再形成します

分類Dev

別の列値に基づいてデータフレーム内の列に値を割り当てる

分類Dev

下限と上限に基づいてデータをバケットに配置する

分類Dev

特定の列の値に基づいてパンダデータフレームの値を変更する

分類Dev

論理式に基づいてRデータフレームの新しい列に値を割り当てる

分類Dev

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

分類Dev

列の値に基づいてパンダデータフレームの行にnanを設定する

分類Dev

別の列の値に基づいてパンダデータフレームに列を追加する

分類Dev

列の値の違いに基づいてパンダのデータフレームを分割する方法

分類Dev

条件に基づいてデータフレームの列に値を割り当てる方法は?

分類Dev

値に基づいてパンダのデータフレームを繰り返し、データフレームにカウンターを追加します

分類Dev

1つ以上の列に基づいてパンダデータフレームに値を追加/挿入する

分類Dev

パンダデータフレームの特定のIDに基づいて列の値を変更する

分類Dev

他の行の値に基づいてパンダのデータフレーム列を追加する方法

分類Dev

特定の列の数値に基づいてパンダのデータフレームを分解する方法

分類Dev

別のデータフレームに基づいてパンダデータフレームを生成する

分類Dev

ペアの値に基づいてパンダデータフレームの行を削除する

分類Dev

パンダデータフレームの複数の列値に基づいて行を選択する

分類Dev

列の値に基づいてパンダのデータフレームを結合する

分類Dev

行の平均値に基づいてパンダデータフレームの列を除外する

分類Dev

他の列の値に基づいてパンダデータフレーム行を作成する

分類Dev

複数の条件に基づいてパンダデータフレームの値を置き換える

Related 関連記事

  1. 1

    パンダデータフレーム:列の値に基づいて整数値を割り当てる

  2. 2

    Rの目標値の下限と上限に基づいて2つのデータフレームを結合する

  3. 3

    条件に基づいてパンダデータフレームの行のグループに一意の値を割り当てる方法は?

  4. 4

    パンダの条件に基づいてデータフレームのサブセットの列に値を割り当てる方法は?

  5. 5

    条件に基づいてパンダデータフレームの複数の列に値を割り当てる方法

  6. 6

    パンダ、iterrowの使用を回避するにはどうすればよいですか(別のデータフレームの値に基づいてデータフレームの新しい列に値を割り当てる方法)

  7. 7

    文字列の状態に基づいてパンダのデータフレーム列に値を割り当てます

  8. 8

    パンダは、別の列の値に基づいて列レベルを追加することにより、データフレームを再形成します

  9. 9

    別の列値に基づいてデータフレーム内の列に値を割り当てる

  10. 10

    下限と上限に基づいてデータをバケットに配置する

  11. 11

    特定の列の値に基づいてパンダデータフレームの値を変更する

  12. 12

    論理式に基づいてRデータフレームの新しい列に値を割り当てる

  13. 13

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

  14. 14

    列の値に基づいてパンダデータフレームの行にnanを設定する

  15. 15

    別の列の値に基づいてパンダデータフレームに列を追加する

  16. 16

    列の値の違いに基づいてパンダのデータフレームを分割する方法

  17. 17

    条件に基づいてデータフレームの列に値を割り当てる方法は?

  18. 18

    値に基づいてパンダのデータフレームを繰り返し、データフレームにカウンターを追加します

  19. 19

    1つ以上の列に基づいてパンダデータフレームに値を追加/挿入する

  20. 20

    パンダデータフレームの特定のIDに基づいて列の値を変更する

  21. 21

    他の行の値に基づいてパンダのデータフレーム列を追加する方法

  22. 22

    特定の列の数値に基づいてパンダのデータフレームを分解する方法

  23. 23

    別のデータフレームに基づいてパンダデータフレームを生成する

  24. 24

    ペアの値に基づいてパンダデータフレームの行を削除する

  25. 25

    パンダデータフレームの複数の列値に基づいて行を選択する

  26. 26

    列の値に基づいてパンダのデータフレームを結合する

  27. 27

    行の平均値に基づいてパンダデータフレームの列を除外する

  28. 28

    他の列の値に基づいてパンダデータフレーム行を作成する

  29. 29

    複数の条件に基づいてパンダデータフレームの値を置き換える

ホットタグ

アーカイブ