我正在尝试使用pandas将三个单独的平面文件中的内容连接到一个.csv中。其中一个输出字段“StoreID”基于一个单独的ID值列表('Stores.txt')。本质上,我需要将合并的数据框作为一系列csv行发布,同时在第三列中为每个商店ID附加结果。我遇到迭代语法问题。任何帮助都将非常感激!
import pandas as pd
items = pd.read_csv("Item_List.csv")
store_loc = pd.read_csv("Store_Locations.csv")
stores = open("Stores.txt")
for i in stores:
item_merged = items.merge(store_loc, on='itemCat')
item_merged['storeID'] = i
item_merged.to_csv("stores_items_output.csv", index=False)
Hypothetical Stores.txt:
3
5
6
期望输出,给定项目和位置的联合列表:
itemID,storeLocation,StoreID
12345,ABCDE,3
23456,ABCDE,3
34567,BCDEF,3
12345,ABCDE,5
23456,ABCDE,5
34567,BCDEF,5
12345,ABCDE,6
23456,ABCDE,6
34567,BCDEF,6
答案 0 :(得分:0)
如果我理解您正在尝试的内容,则代码中的问题是您使用最后一个值覆盖商店ID,以便它们都具有相同的商店ID。
您想要的是3个dfs,其中每个合并的项目和位置有3个商店ID排列。
我的方法是在循环外合并,创建一个副本的临时df,为此df设置storeId并连接到合并的df然后写出到csv:< / p>
# our merged items and store locations
merged_items = items.merge(store_loc, on='itemCat')
for i in stores:
# take a copy
temp_df = merged_items.copy()
# set the store id
temp_df['storeID'] = i
# now just concat
item_merged = pd.concat([iterm_merged, temp_df], ignore_index=True)
# rest of code is same