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