首页 > 解决方案 > 如何根据python中的条件进行连接

问题描述

我想根据同一日期连接 2 个数据框,以识别何时以线性方式购买产品。

这是我的代码:

s = pd.Series(['01-2020', '02-2020', '03-2020', '04-2020', '05-2020', '06-2020', '07-2020', '08-2020', '09-2020', '10-2020', '11-2020', '12-2020'], name=Date)
data = [['01-2020', 5], ['02-2020', 3], ['03-2020', 1], ['05-2020', 4], ['06-2020', 8], ['08-2020', 3], ['09-2020', 11], ['10-2020', 5], ['12-2020', 3]]
df = pd.DataFrame(data, columns = ['Date Bought', 'Amount_Bought'])
result = pd.concat([df, s], axis=1, join="outer")

当我尝试连接这些数据帧时,结果是乱序的。

我希望输出也像这样

  Date    Date_Bought Amount_Bought
01-2020     01-2020     5
02-2020     02-2020     3
03-2020     03-2020     1
04-2020       NaN       0
05-2020     05-2020     4
06-2020     06-2020     8
07-2020        NaN      0
08-2020     08-2020     3
09-2020     09-2020     11
10-2020     10-2020     5
11-2020        NaN      0
12-2020     12-2020     3

标签: pythonpython-3.x

解决方案


使用合并而不是 concat - 后者将组合由系列和数据框形成的集合中的列,这不是您想要的。此外,在“Amount_Bought”列上使用 fillna 删除 NaN。

results = pd.merge(left = s, right = df, left_on = 'Date', right_on = 'Date Bought', how = 'left')
results[['Amount_Bought']] = results[['Amount_Bought']].fillna(value=0)

推荐阅读