我有两个CSV文件。
csv_1列:
AP Name Mac Switch Port
AP-2-2 001122334455 switchname1 0/37
AP-2-3 554433221100 switchname2 0/41
csv_2列:
Mac Switch Port
001122334455 switchname1 0/37
554433221100 switchname2 0/41
我想根据发现的mac地址匹配时间(这些顺序不正确),用csv_1
中的交换机和端口来更新csv_2
中的交换机和端口列。
在python中正确执行此操作的最佳和最有效的方法是什么?我知道如何读取CSV文件,只是不确定如何正确检查这些值。
答案 0 :(得分:0)
由于您没有提供特定的代码示例,因此我假设您已经解析了csv文件,并希望在处理方面有所帮助。尝试这样的事情:
for index_2, row_2 in enumerate(csv_2):
for index_1, row_1 in enumerate(csv_1):
if row_2.mac == row_1.mac:
csv_1[index_1].switch = csv_2[index_2].switch
csv_1[index_1].port = csv_2[index_2].port
然后,将csv_1写回到文件中。
答案 1 :(得分:0)
您可以使用熊猫来加入新值:
import pandas as pd
df1 = pd.read_csv("<path to csv1>.csv")
df2 = pd.read_csv("<path to csv2>.csv").rename(columns={"Switch": "new_switch", "Port": "new_port"})
# clean up column names
df1.columns = [i.strip() for i in df1.columns]
df2.columns = [i.strip() for i in df2.columns]
# join in new values
result = df1.join(df2.set_index("Mac"), on="Mac")
# use the new values where they're defined, otherwise fill in with the old values
result["Switch"] = result["new_switch"].fillna(result["Switch"])
result["Port"] = result["new_port"].fillna(result["Port"])
# delete the "new" columns, which are no longer needed
del result["new_switch"], result["new_port"]
# write out
result.to_csv("<path to new csv>.csv", index=False)
这假设您的csv2的每个Mac
值只有一行。