python - 如何根据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
解决方案
使用合并而不是 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)
推荐阅读
- sql-server - sql将月份布尔字段保存为整数以进行按位操作
- ruby - 从 Array.product 填充的 Ruby Hash 产生意外行为
- powershell - 使用 powershell 从 ARM 模板 (.json) 中删除不需要的内容
- hybris - 将自定义后台扩展依赖项添加到另一个(外观)扩展时出现问题
- javascript - 使用 javascript 创建一个新的 Phabricator 任务
- ios - 仅在 iPhone 7 之前的设备上使用前置摄像头时崩溃
- kiwi-tcms - 关于备份kiwi-tcms数据库的一些问题
- swagger-ui - swagger-ui - 打开 api 3,multipart/form-data 数组问题
- mysql - 更新一个表中一个字段的所有记录,其值只在另一个表中
- elasticsearch - 用于弹性搜索的 Java 与 Python