Как извлечь данные из фрейма данных и соединиться с другим фреймом данных - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть два кадра данных df и df1. Я хочу объединить оба кадра данных и получить выходные данные различными способами

df
City    Date        Wind    Temperature
London  5/11/2019   14        5
London  6/11/2019   28        6
London  7/11/2019   10        5
Berlin  5/11/2019   23        12
Berlin  6/11/2019   24        12
Berlin  7/11/2019   16        16
Munich  5/11/2019   12        10
Munich  6/11/2019   33        11
Munich  7/11/2019   44        13
Paris   5/11/2019   27        6
Paris   6/11/2019   16        7
Paris   7/11/2019   14        8
Paris   8/11/2019   10        6

df1
ID     City   Delivery_Date Provider
1456223 London  7/11/2019   Amazon
1456345 London  6/11/2019   Amazon
2345623 Paris   8/11/2019   Walmart
1287456 Paris   7/11/2019   Amazon
4568971 Munich  7/11/2019   Amazon
3456789 Berlin  6/11/2019   Walmart

Выход1

ID  City    Delivery_Date   Wind    Temperature
1456223 London  7/11/2019   10        5
1456345 London  6/11/2019   28        6
2345623 Paris   8/11/2019   10        6
1287456 Paris   7/11/2019   14        8
4568971 Munich  7/11/2019   44       13

Выход 2

Здесь данные о погоде для Предмета должны отображаться до тех пор, пока не будет достигнута дата его доставки.

ID  City    Delivery_Date   Wind    Temperature
1456223 London  5/11/2019   14  5
1456223 London  6/11/2019   28  6
1456223 London  7/11/2019   10  5
1287456 Paris   5/11/2019   27  6
1287456 Paris   6/11/2019   16  7
1287456 Paris   7/11/2019   14  8

Как это можно сделать.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Вы можете использовать df.merge

import pandas as pd
df.merge(df1[['City','Delivery_Date','ID']],left_on = ['City','Date'] ,right_on = ['City','Delivery_Date'],how='inner')
0 голосов
/ 05 ноября 2019

рассматривая DF и DF1 как кадры данных, как вы объяснили.

import pandas as pd 
output1 = pd.merge(DF1, DF,left_on = ['City','Date'] ,right_on = ['City','Delivery_Date'], how='inner' ) 
res1 = df1.groupby('City').max() [['Delivery_Date']]
result1 = pd.merge(df,res1, on ='City')
output2 = result1 [result1['Date'] <= result1['Delivery_Date']]

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...