Добавить столбец и добавить датафрейм - PullRequest
0 голосов
/ 04 июля 2018

У меня есть список URL-адресов для файлов CSV и список имен, в цикле 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'] = имя Ошибка типа: индексы списка должны быть целыми числами или частями, а не str

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Ошибка возникает из-за того, что ваш код пытается проиндексировать список строкой. Вместо этого вы можете использовать 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)
0 голосов
/ 04 июля 2018

Вы на самом деле пытаетесь ввести строку в столбец, что является недопустимым. Вам нужно добавить одно и то же имя для всего столбца?
Если это так, вам нужно сделать следующее:

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

Если вы хотите что-то еще, пожалуйста, уточните

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...