python - 如何根据python中2列的条件创建具有值的新数据框列?
问题描述
我有 2 个数据框,一个包含 2 列(日期和键),另一个包含相同的 2 列(日期和键)。如果日期和密钥存在于另一个数据框中,我想在一个数据框中创建一个值为“1”的新列,如果不存在则为“0”。这是一个例子:
df1:
+---------+--------+
| date | key |
+---------+--------+
| date1 | A |
+---------+--------+
| date2 | A |
+---------+--------+
| date3 | B |
+---------+--------+
df2:
+---------+--------+
| date | key |
+---------+--------+
| date1 | A |
+---------+--------+
| date4 | C |
+---------+--------+
| date5 | B |
+---------+--------+
resulting df1:
+---------+--------+--------+
| date | key | col3 |
+---------+--------+--------+
| date1 | A | 1 |
+---------+--------+--------+
| date2 | A | 0 |
+---------+--------+--------+
| date3 | B | 0 |
+---------+--------+--------+
本例中,由于df2中存在df1(date1,A)的第一行,col3的值为1,其他行为0。
我该怎么做?
解决方案
对新列使用indicator
参数,然后1,0
通过比较both
字符串转换为:
df = df1.merge(df2, how='left', indicator='col3', on=['date','key'])
df['col3'] = df['col3'].eq('both').astype(int)
或者:
df['col3'] = np.where(df['col3'].eq('both'), 1, 0)
推荐阅读
- django - 芹菜:ImportError:没有名为时间的模块
- react-native - 我从 firebase 获取数据,但我无法在仅显示 console.warn 的视图中显示
- jenkins - 是否可以在 SCM URL 中使用 Jenkins 参数化构建中的参数?
- java - 带有 .crt 和 .key 文件的 Java 密钥库设置
- r - R中的单独小时和分钟
- sql - 从不同的表中获取不匹配的数据
- c# - 如何从 C# 在 Exchange 命令行管理程序中启动脚本?
- c# - c#语音识别和合成
- python - 如何在不出现 Unsupported media type 错误的情况下将数据从 React 表单发送到 Django 后端服务器?
- c# - 如何使用 EnvelopedCms 类解密数据,在多个证书存储中搜索证书?