添加列并附加数据框
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)
【讨论】:
以上是关于添加列并附加数据框的主要内容,如果未能解决你的问题,请参考以下文章