热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何比较来自两个不同数据帧的列并保留第一个数据帧中的值?

我有两个不同大小的数据框。它们都有四列:单词、x、y和z。但是,在加入这两个数据帧时,我想保留相似单词的x、y、z值。保留df1中不存在但df2中存在的词。

我有两个不同大小的数据框。它们都有四列:单词、x、y 和 z。

但是,在加入这两个数据帧时,我想保留相似单词的 x、y、z 值。保留 df1 中不存在但 df2 中存在的词。

我尝试使用,pd.merge但这将保留两个值并且仅保留相似的单词。如果我使用,pd.concat我必须删除类似的元素,但不会来自第一个数据帧。

样本

df1 = pd.DataFrame({'Words':
['aardvark', 'abalone', 'abandon'],
'x': [0.999, 0.888, 0.777],
'y': [0.999, 0.888, 0.777],
'z': [0.999, 0.888, 0.777]})
df2 = pd.DataFrame({'Words':
['aaaaahh', 'aardvark', 'abalone', 'abandon', 'zoo', 'zoom', 'zucchini'],
'x': [0.199, 0.111, 0.222, 0.333, 0.232, 0.842, 0.945],
'y': [0.929, 0.111, 0.222, 0.333, 0.112, 0.62, 0.265],
'z': [0.993, 0.111, 0.222, 0.333, 0.212, 0.344, 0.745]})
# Expected output
df_res = pd.DataFrame({'Words':
['aaaaahh', 'aardvark', 'abalone', 'abandon', 'zoo', 'zoom', 'zucchini'],
'x': [0.199, 0.999, 0.888, 0.777, 0.232, 0.842, 0.945],
'y': [0.929, 0.999, 0.888, 0.777, 0.112, 0.62, 0.265],
'z': [0.993, 0.999, 0.888, 0.777, 0.212, 0.344, 0.745]})

我试过的

import pandas as pd
# Merge
df_res = pd.merge(df1, df2, on='Word', how='inner')
# Concat
df_cOncat= pd.concat(objs=[df1, df2], ignore_index=True)
df_cOncat= pd.drop_duplicates(subset=['Word'], keep=False, ignore_index=True)
# Compare
d_res = d1[(d1['Word'] != d1['Word'])]
ValueError: Can only compare identically-labeled Series objects

回答


您可以使用df.appendto 附加df1df2,然后是drop_duplicates, with keep='last', thensort_indexreset_index

>>> (df2.append(df1)
.drop_duplicates('Words', keep='last')
.sort_index()
.reset_index(drop=True))
Words x y z
0 aaaaahh 0.199 0.929 0.993
1 aardvark 0.999 0.999 0.999
2 abalone 0.888 0.888 0.888
3 abandon 0.777 0.777 0.777
4 zoo 0.232 0.112 0.212
5 zoom 0.842 0.620 0.344
6 zucchini 0.945 0.265 0.745






推荐阅读
author-avatar
一只幸福的汪星人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有