【问题标题】:Compare two files and add new column to file one, if true比较两个文件并将新列添加到文件一,如果为真
【发布时间】:2021-12-22 04:13:21
【问题描述】:

我对python很陌生,所以请善待:P

我尝试查找两个文件中相同的值。在文件 1 中,我的列比文件 2 中的多。

所以我做了以下事情:

import pandas as pd
import numpy as np
from io import StringIO

df1 = pd.read_csv('File2.csv', delimiter=';',encoding="utf-8")
df2 = pd.read_excel('File1.xlsx')

df_1 = pd.DataFrame(df1)
df_2 = pd.DataFrame(df2)

for index_xls, row_xls in df_2.iterrows():
        excel = row_xls['Source-a'],row_xls['Source-b'],row_xls['Target-1'],row_xls['Target-2']

        for index_csv, row_csv in df_1.iterrows():
            csv = row_csv['Source-a'],row_csv['Source-b'],row_csv['Target-1'],row_csv['Target-2']
         
            pgv = excel == csv

            if pgv == True:
                print(excel)
            

现在我想为 for 循环中的每个“真”值在 file1.xlsx 中添加一个新列。

在 File1.xlsx 中有更多列,如在 file2.csv 中。

我在变量“excel”中得到了正确的结果,但我不知道如何继续。

简短:我想要变量“excel”中的值并将它们与 file1.xls 的 4 列进行比较,如果它们匹配,我想在匹配的行中添加一个“true”。

我希望我描述了它,以便有人可以在这里理解我的问题:D

非常感谢

【问题讨论】:

    标签: python pandas dataframe loops


    【解决方案1】:

    这两行是多余的; pd.read_csvpd.read_excel 已经返回 DataFrames:

    df_1 = pd.DataFrame(df1)
    df_2 = pd.DataFrame(df2)
    

    关于你的主要问题:

    cols = ['Source-a','Source-b','Target-1','Target-2']
    present_in_both = pd.merge(df1,df2,on=cols,how='inner')
    

    【讨论】:

    • 感谢您的帮助。这似乎工作正常。但是有一个问题:如果我把它写在一个 xlsx 文件中,它会很好用,但是如果我打印(在两者中都预设),为什么每次匹配都有一个新的数据框?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多