numpy 如何使用Python在Excel中比较两列?

dly7yett  于 2023-03-18  发布在  Python
关注(0)|答案(2)|浏览(193)

我必须excel文件与以下字段

文件1

列1、列2、列3、列4、列5、列6、列7、列8、列9
服务器1,java_是,....
服务器2,java_编号,....
服务器4,java_编号,....
服务器8,java_编号,....

文件2

列1、列2、列3、列4、列5、列6、列7、列8、列9
服务器1,java_是,....
服务器3,java_编号,....
服务器4,java_是,....
服务器8,java_编号,....
我想
a.迭代文件1
B.将file 1的col 1中的每个条目与file 2的col 1进行比较
c.如果它存在,我想看看file 1-〉col 2中的值是否与file 2-〉col 2中的条目匹配
d.如果file 1-〉col 2与file 2-〉col 2不匹配,则我希望将file 1-〉col 2更新为等于file 2-〉col 2

31moq8wy

31moq8wy1#

您可以使用pandas来实现这一点:
首先,使用pd.read_excel(或pd.read_csv)读取文件

import pandas as pd

df1 = pd.read_excel("path/to/file1.xlsx")
df2 = pd.read_excel("path/to/file2.xlsx")

从您提供的示例中,您应该得到如下内容:
DF1
| | 列1|列2|
| - ------|- ------|- ------|
| 无|伺服器1|java_是|
| 1个|服务器2|java_编号|
| 第二章|服务器4|java_编号|
| 三个|服务器8|java_编号|
DF2
| | 列1|列2|
| - ------|- ------|- ------|
| 无|伺服器1|java_是|
| 1个|服务器3|java_编号|
| 第二章|服务器4|java_是|
| 三个|服务器8|java_编号|
现在在left模式下将df2合并到col1上的df1中,并相应地覆盖df1["col2"]

merged =  df1.merge(df2, on="col1", how="left")
df1['col2'] = merged['col2_y'].fillna(merged['col2_x'])

df 1应为
| | 列1|列2|
| - ------|- ------|- ------|
| 无|伺服器1|java_是|
| 1个|服务器2|java_编号|
| 第二章|服务器4|java_是|
| 三个|服务器8|java_编号|

mbzjlibv

mbzjlibv2#

假设您有一个名为workbook.xlsx的文件,其中包含2个工作表(即sheet 1,sheet 2),首先您可以使用以下代码访问它。

import pandas as pd
df1 = pd.read_excel("..\workbook.xlsx", sheet_name= "sheet1")
df2 = pd.read_excel("..\workbook.xlsx", sheet_name= "sheet2")

现在DF 1表示第一片,DF 2表示第二片。
您可以在列名“col 1”上迭代df 1,以检查条件并使用以下代码更新新数据框。

for i in range(len(df1["col1"])):
    if (df1["col1"][i] == df2["col1"][i]) and (df1["col2"][i] != df2["col2"][i]):
        df1.at[i,"col2"] = df2["col2"][i]

但这将只检查同一行号上的关联值。如果您需要检查Sheet 1-〉col 1值是否存在于Sheet 2-〉col 1值中,您可以使用此循环,而不是将获得相同的结果。

for i in range(len(df1["col1"])):
    if (df1["col1"][i] in df2["col1"].values):
        j = np.where(df2["col1"] == df1["col1"][i])[0]
        df1.at[i,"col2"] = df2["col2"][j]

最后将您的结果存储到一个新的excel工作簿中,您可以使用。

with pd.ExcelWriter('New_result.xlsx') as writer:
    df1.to_excel(writer, sheet_name="Sheet1")
    df2.to_excel(writer, sheet_name="Sheet2")

这将保证您将Sheet 1-〉col 2中的所有值与Sheet 2-〉col 2匹配,只要Sheet 1-〉col 1 == Sheet 2-〉col 1

相关问题