【问题标题】: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 与代码无关。您得到的错误是因为您将其用作字典而不是列表

标签: python pandas dataframe


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 2021-09-04
      • 2019-09-09
      • 2014-10-10
      • 2021-06-06
      • 2018-10-28
      • 2018-02-15
      • 1970-01-01
      • 2012-12-29
      相关资源
      最近更新 更多