python - 如何根据 python 中 2 列的条件创建具有值的新数据框列?

标签 python pandas dataframe

我有 2 个数据框,一个包含 2 列(日期和 key ),另一个包含相同的 2 列(日期和 key )。我想在一个数据框中创建一个新列,如果日期和键存在于另一个数据框中,则值为“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    |
+---------+--------+--------+


本例中,由于 df1 的第一行(date1, A)存在于 df2 中,因此 col3 的值为 1,其他行均为 0。

我该怎么做?

最佳答案

对新列使用indicator参数,然后通过比较both字符串转换为1,0:

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)

关于python - 如何根据 python 中 2 列的条件创建具有值的新数据框列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67054537/

相关文章:

java - Python > 使用 JDBC 连接到 Oracle 服务名称 (jaydebeapi)

python - google app engine——异步代码块? Python

python - 就地更改或覆盖数据框?

r - 如何在R中逐行读取json文件?

r - 在数据框创建的循环中,使用 data.table 包中的 set() 将值从一个数据框复制并粘贴到另一个数据框

python - basemap 大陆上方的图像

python cherrypy - 如何添加标题

python - 如何显示 DataFrame 的前 N ​​行和后 N 行

python - Pandas GroupBy String 连接列名而不是列值

python - 检查文本列 pandas 中停用词的数量