加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python比较2列,如果第3列与第2列匹配,则用第1列的值编写第4列

发布时间:2020-12-17 17:39:11 所属栏目:Python 来源:网络整理
导读:我在Excel文件中有3列.我想比较col 3中的值和col2中的值.如果col2中存在该值,则将col1的值写入col4.如果该值不在col2中,则将NA写入col4.col3有时可能为空值,在这种情况下,无需进行比较. 例: Excel文件 col1 col2 col3a2 2 41d 3 2cc 5 312 4 1 预期结果: c

我在Excel文件中有3列.我想比较col 3中的值和col2中的值.如果col2中存在该值,则将col1的值写入col4.如果该值不在col2中,则将NA写入col4.col3有时可能为空值,在这种情况下,无需进行比较.

例:
Excel文件

col1    col2    col3
a2      2        4
1d      3        2
cc      5        3
12      4        1

预期结果:

col1    col2    col3    col4
a2      2        4       12
1d      3        2       a2
cc      5        3       1d
12      4        1       NA

仍在进行中.指针将非常有帮助.

最佳答案
如果07N创建的另一个系列不匹配,请使用Series.map作为默认的NaN:

df = pd.read_excel(file)

df['col4'] = df['col3'].map(df.set_index('col2')['col1'])
print (df)
  col1  col2  col3 col4
0   a2     2     4   12
1   1d     3     2   a2
2   cc     5     3   1d
3   12     4     1  NaN

如果col2中可能重复,则会引发错误:

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

解决方法是添加DataFrame.drop_duplicates

print (df)
  col1  col2  col3
0   a2     2     4
1   1d     2     2
2   cc     5     3
3   12     4     1

df['col4'] = df['col3'].map(df.drop_duplicates('col2').set_index('col2')['col1'])
print (df)
  col1  col2  col3 col4
0   a2     2     4   12
1   1d     2     2   a2
2   cc     5     3  NaN
3   12     4     1  NaN

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读