将Py Pandas Dataframes附加到单个.csv中,按单独的列表进行迭代

时间:2014-09-05 23:33:36

标签: python csv pandas iteration dataframe

我正在尝试使用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

1 个答案:

答案 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