添加列并附加数据框

Posted

技术标签:

【中文标题】添加列并附加数据框【英文标题】:Add Column and Append Dataframe 【发布时间】:2018-07-04 10:56:58 【问题描述】:

我有一个 CSV 文件的 URL 列表和一个名称列表,在一个 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['Name'] = 名称 TypeError: 列表索引必须是整数或切片,而不是 str

【问题讨论】:

请同时包括您定义数据框的位置。看起来像是定义错误。 你应该发布完整的代码:form_dfs 与代码无关。您得到的错误是因为您将其用作字典而不是列表 【参考方案1】:

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

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

如果你想要别的,请详细说明

【讨论】:

【参考方案2】:

发生错误是因为您的代码试图用字符串索引列表。相反,您可以使用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)

【讨论】:

以上是关于添加列并附加数据框的主要内容,如果未能解决你的问题,请参考以下文章

通过匹配部分索引标签添加索引列并重新索引数据框

匹配列并附加到数据框,Python 3.6

从 .txt 中提取以空格分隔的列并添加以保存在新数据框中

如何遍历数据框,将新字段添加到系列,然后将该系列附加到 csv?

遍历数据框中的列并创建一个列名 + str 的列表

在附加的数据框中添加列名? [复制]