添加列并追加数据框

时间:2018-07-04 10:56:59

标签: python pandas dataframe

我有一个用于CSV文件的URLS列表和一个名称列表,在for循环中,我需要将每个CSV转换为一个DataFrame,并在名称列表中的同一索引处添加一个包含名称的列。

我可以成功下载每个CSV并创建一个数据框,然后将其附加到新的数据框,但是在同一迭代中添加列时遇到了问题。

以下是我目前所拥有的。

        for url, name in zip(url_list, name_list):

            df.append(pd.read_csv(url))

            df['Name'] = name

            complete_df = pd.concat(df, ignore_index = True)

这将导致错误

form_dfs ['名称'] =名称 TypeError:列表索引必须是整数或切片,而不是str

2 个答案:

答案 0 :(得分:0)

您实际上是在向不合法的列输入字符串。是否需要在整个列中添加相同的名称?
如果是这种情况,则需要执行以下操作:

df['Name']=pd.Series([name for i in range(len(df))])

如果您想要其他东西,请详细说明

答案 1 :(得分:0)

发生此错误是因为您的代码正在尝试使用字符串对列表进行索引。相反,您可以使用pd.DataFrame.assign内联添加一系列:

df = []
for url, name in zip(url_list, name_list):
    df.append(pd.read_csv(url).assign(Name=name)

complete_df = pd.concat(df, ignore_index=True)

另一种方法是使用列表理解:

df = [pd.read_csv(url).assign(Name=name) for url, name in zip(url_list, name_list)]
complete_df = pd.concat(df, ignore_index=True)