Python 3.x 在数据帧python中比较具有相同列的不同行
我有两个数据帧Python 3.x 在数据帧python中比较具有相同列的不同行,python-3.x,amazon-web-services,dataframe,numpy,Python 3.x,Amazon Web Services,Dataframe,Numpy,我有两个数据帧 Dataframe # 1 input : abc.json.gz cde.json.gz efg.json.gz #dataframe 1 file_val = pd.DataFrame(val, columns=['filename']) # dataframe 1 Dataframe # 2 input : ghi.json.gz abc.json.gz cde.json.gz mno.json.gz xyz.json.gz #dataframe 2 rds_rc
Dataframe # 1 input :
abc.json.gz
cde.json.gz
efg.json.gz
#dataframe 1
file_val = pd.DataFrame(val, columns=['filename']) # dataframe 1
Dataframe # 2 input :
ghi.json.gz
abc.json.gz
cde.json.gz
mno.json.gz
xyz.json.gz
#dataframe 2
rds_rcd = pd.read_sql_query('''select filename from tablename where cast(event_date as date) = '{0}' '''.format(self.timestr), conn)
Below code to check if there are any common records between both dataframe # 1 and daframe # 2
file_val['status'] = np.where(file_val['filename'].values != rds_rcd['filename'].values, 'False', 'True')
上述两个数据帧具有相同的列(文件名),但没有不同的记录
问题:即使“abc.json.gz”和“cde.json.gz”都存在于这两个数据帧中,也可以将所有记录的值都视为“False”
filename status
0 abc.json.gz False
1 cde.json.gz False
任何建议都很好。假设您有两个数据帧df1和df2,如:
df1:
filename
0 abc.json.gz
1 cde.json.gz
2 efg.json.gz
及
您可以通过以下方式找到通用文件名集:
common_files = set(df1['filename'].to_list()).intersection(set(df2['filename'].to_list()))
这将产生:
{'abc.json.gz', 'cde.json.gz'}
请明确说明您在做什么工作时特别需要帮助。为了澄清,请提供一个特定的问题,包括示例输入数据、您编写的代码以及您期望作为输出的内容。请阅读Jon Skeet的优秀博客文章,以获得更新问题的指导。有关提问的更详细教程,请参阅Eric S.Raymond的网站感谢您的博客文章,希望我能以正确的方式对其进行格式化。很好,但是我的文件[u val['status']=np.where(file[u val['filename'].values!=rds_rcd['filename'].values'False',True')有什么问题。as希望将所有匹配的“status”作为单独的列显示为“True”或“False”。我不擅长np.where函数,但我会使用此函数查找任一文件中满足条件的行。因此,在您的例子中,
file\u val['filename'].values
的结果是file\u val中的一系列文件名,而rds\u rcd['filename']的结果是rds\u rcd中的一系列文件名。然后将文件_val系列中的第一项与rcd_val系列中的第一项进行比较,如果不=将结果设置为False,否则为True。由于名称在两个系列之间不对齐,因此您的名称总是错误的。
{'abc.json.gz', 'cde.json.gz'}