несколько условий для поиска в пандах - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть 2 кадра данных.Один с городом, датами и продажами

sales = [['20101113','Miami',35],['20101114','New York',70],['20101114','Los Angeles',4],['20101115','Chicago',36],['20101114','Miami',12]]

df2 = pd.DataFrame(sales,columns=['Date','City','Sales'])

print (df2)

       Date         City  Sales
0  20101113        Miami     35
1  20101114     New York     70
2  20101114  Los Angeles      4
3  20101115      Chicago     36
4  20101114        Miami     12

Второй имеет несколько дат и городов.

date = [['20101114','New York'],['20101114','Los Angeles'],['20101114','Chicago']]

df = pd.DataFrame(date,columns=['Date','City'])

print (df)

Я хочу извлечь продажи из первого кадра данных, которые соответствуют городу и датам в 3-м кадре данных, и добавить продажи во 2-й кадр данных.Если в первой таблице отсутствует дата, следует извлечь данные о продажах на следующую наивысшую дату.

Новый фрейм данных должен выглядеть следующим образом:

       Date         City  Sales

0  20101114     New York     70

1  20101114  Los Angeles      4

2  20101114      Chicago     36

У меня проблемы с извлечением и объединением таблиц.Есть предложения?

1 Ответ

0 голосов
/ 06 декабря 2018

Это pd.merge_asof, что позволяет вам объединить комбинацию точных совпадений и затем "близкое" совпадение для некоторого столбца.

import pandas as pd

df['Date'] = pd.to_datetime(df.Date)
df2['Date'] = pd.to_datetime(df2.Date)

pd.merge_asof(df.sort_values('Date'), 
              df2.sort_values('Date'), 
              by='City', on='Date',
              direction='forward')

Вывод:

        Date         City  Sales
0 2010-11-14     New York     70
1 2010-11-14  Los Angeles      4
2 2010-11-14      Chicago     36
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...