python - 在两个不同的数据框python中获取匹配的行
问题描述
在此先感谢 - 问题是比较 csv 文件的两个单独数据帧的行;有和没有列标题。我想将第二个数据帧中的行与数据帧一中的行匹配。我不能使用合并,因为两者都没有要合并的通用列名。
1:第一个数据框有标题
2:第二个数据框没有标题。
3:获取匹配的位置
我试过这个:
df1 = pd.read_csv(data1)
df2 = pd.read_csv(data2)
def test1():
for index, rows in df1.iterrows():
if rows in (df2):
return nrows
数据集:
第一个数据集:
第二个数据集:
解决方案
首先将标题添加到第二个dataframe
:
df2.columns = df1.columns
或者,更好的是,在读取文件时首先定义它们:
df2 = pd.read_csv(data2, header=None, names=df1.columns.tolist())
然后inner merge
他们只保留在两者中相同存在的行:
united_df = df1.merge(df2, how='inner')
推荐阅读
- weekday - 如何在 Automation Anywhere 中获取/输出当前一周的所有天数?
- java - java 8项目可以依赖gradle中的java 11依赖吗
- laravel - 如何从 Laravel Voyager 中的数据透视表中删除相关数据
- javascript - 我怎样才能让这个图表在本地呈现?(D3.js)
- java - 如何将自定义嵌套列表 xml 转换为相应的 java 对象
- sql-server - 即使我输入了一个值,SQL Server 过程也会引发参数错误
- angular-flex-layout - 父行和子列布局在 IE11 中中断,但在其他浏览器中有效
- css - 如何定位元素以使用屏幕的剩余空间而不会溢出[TailwindCSS]
- javascript - 为什么我不能在控制台中循环滚动浏览器窗口?
- amazon-web-services - aws_cloudfront_distribution.s3_distribution:创建 CloudFront 分配时出错:AccessDenied: