中查找的多种条件

中查找的多种条件

我有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)


我想从与第三个数据框中的城市和日期匹配的第一个数据框中提取销售,然后将销售添加到第二个数据框中。如果第一个表中缺少日期,则应检索下一个最高日期的销售额。

新的数据框应如下所示

       Date         City  Sales

0  20101114     New York     70

1  20101114  Los Angeles      4

2  20101114      Chicago     36


我在提取和合并表时遇到了麻烦。有什么建议么?

最佳答案

这是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

关于python - 在 Pandas 中查找的多种条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53659392/

10-12 21:08