[英]Python Pandas Dataframe - Best Join and filter condition
輸入:
時間 | 從 | 到 |
---|---|---|
2/2/22 | X | 是 |
2/2/22 | 是 | X |
2/2/22 | X | 是 |
2/2/22 | 一種 | 乙 |
2/2/22 | P | 問 |
2/3/22 | 問 | P |
2/2/22 | C | 丁 |
2/3/22 | 是 | X |
Output:
時間 | 從 | 到 | 時間 | 從 | 到 |
---|---|---|---|---|---|
2/2/22 | X | 是 | 2/2/22 | 是 | X |
2/2/22 | X | 是 | 2/3/22 | 是 | X |
2/2/22 | P | 問 | 2/3/22 | 問 | P |
注意:第 4 和第 7 行被忽略,因為沒有對應項。 每行應該只與它們的對應行連接一次。 加入應該發生在同一天和第二天。
嘗試這個,
pd.concat([df.iloc[::2, :].reset_index(drop = True), df.iloc[1::2, :].reset_index(drop = True)], axis = 1)
Output -
時間 | 從 | 到 | 時間 | 從 | 到 | |
---|---|---|---|---|---|---|
0 | 2/2/22 | X | 是 | 2/2/22 | 是 | X |
1個 | 2/2/22 | X | 是 | 2/3/22 | 是 | X |
df2 = df.merge(df, left_on=['From', 'To'], right_on=['To', 'From'])
df2[df2.Dt_x < df2.Dt_y]
# Or, we could be more exact if they were proper datetimes:
# df2[df2.Dt_x == (df2.Dt_y - pd.Timedelta(days=1))
Output:
Dt_x From_x To_x Dt_y From_y To_y
1 2/2/22 X Y 2/3/22 Y X
3 2/2/22 X Y 2/3/22 Y X
8 2/2/22 P Q 2/3/22 Q P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.