Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取两个不同dataframe python中的匹配行_Python_Python 3.x_Pandas_Csv_Dataframe - Fatal编程技术网

获取两个不同dataframe python中的匹配行

获取两个不同dataframe python中的匹配行,python,python-3.x,pandas,csv,dataframe,Python,Python 3.x,Pandas,Csv,Dataframe,提前感谢-问题是比较csv文件的两个独立数据帧的行;有或没有列标题。 我想将第二个数据帧中的行与第一个数据帧中的行进行匹配。我不能使用merge,因为两者都没有可合并的公共列名 1:第一个数据帧有标题 2:第二个数据帧没有标题 3:获得比赛的位置 我试过这个: df1 = pd.read_csv(data1) df2 = pd.read_csv(data2) def test1(): for index, rows in df1.iterrows():

提前感谢-问题是比较csv文件的两个独立数据帧的行;有或没有列标题。 我想将第二个数据帧中的行与第一个数据帧中的行进行匹配。我不能使用merge,因为两者都没有可合并的公共列名

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 
数据集:

第一个数据集:


第二个数据集:

首先使用以下命令将标题添加到第二个
数据帧中:

df2.columns = df1.columns
或者,更好的做法是,在读取文件时首先使用以下命令定义它们:

df2 = pd.read_csv(data2, header=None, names=df1.columns.tolist())
然后
internal merge
将它们合并,只保留在两个文件中相同的行中:

united_df = df1.merge(df2, how='inner')

不要使用
iterrows()
itertuples()
要好得多。您可以共享数据帧或文件的实际内容吗?参见:NH23345 mountain2B 936 56.870342-4.199001 NH136714 A'Chailleach 997 57.6938-5.128715 NH681041 A'Chailleach 929.2 57.109564-4.179285 NH094147 A'Chraileag(A'Chralaig)1120 57.184186-5.154837 NH008231 A’Ghlas bheinn 918 57.25509-5.303687 NH007749 A’Mhaighdean 967 57.719644-5.34672 NN604762 AA 973.2 56.857002-4.290668地名高度经度Osgrid A’Bhuidheanach Bheeag 936 56.870342-4.199001 NN660775 A’Chailleach 997 57.6938-5.128715 NH136714 A’Chailleach 929.2 57.109564-1042851一个“Chraileag”(一个“Chralaig”)1120 57.184186-5.154837 NH094147 A'Ghlas bheinn 918 57.25509-5.303687 NH008231 A'Mhaighdean 967 57.719644-5.34672 NH007749 A'mharconich 973.2 56.857002-4.290668 NN604762 Am Basteir 934 57.247931-6.202982 NG465253 Am Bodach 1031.8 56.741727-4.983393 NN Am Faochagach 953 57.771801-4.85387999是第一个数据集没有列名,而第二个是具有列名的数据集。这些文件存储在单独的csv文件中,最好将其包含在您的帖子中,呃。谢谢您的贡献@Aryerez。在数据集和合并不相同的情况下,将df1列分配给df2意味着没有正确的列headings@happycoder如果数据集不相同,整个问题就毫无意义。如果它们的意思不一样,你到底想和什么匹配?抱歉@Aryere,目的是逐行阅读df1;如果任何行与df2中的行匹配,则将其标记为。Ok,但如果
df2
中的列不一定与
df1
中的列具有相同的含义,则该行不匹配。例如,假设
df2
中的第3列表示“长度”,而
df2
中的第4列表示“纬度”(与
df1
中的含义相反)。如果
df1
中一行的经度与
df2
中的纬度(而不是经度)匹配,您如何确定它们是否匹配?