Как добавить несколько CSV-файлов вместе и дополнительный столбец, чтобы указать, откуда появился каждый файл?Как объединить файлы CSV с Pandas (и добавить идентифицирующую колонку)
До сих пор у меня есть:
import os
import pandas as pd
import glob
os.chdir('C:\...') # path to folder where all CSVs are stored
for f, i in zip(glob.glob('*.csv'), short_list):
df = pd.read_csv(f, header = None)
df.index = i * len(df)
dfs.append(df)
all_data = pd.concat(dfs, ignore_index=True)
Это все работает хорошо, за исключением того, идентифицирующей колонки. i
- это список strings
, который я хочу поместить в колонку A all_data
. Одна строка для каждой строки каждого столбца. Вместо этого он возвращает много цифр и дает TypeError: Index(....) must be called witha collection of some kind
.
Ожидаемый результат:
str1 file1entry1
str1 file1entry2
str1 file1entry3
str2 file2entry1
str2 file2entry2
str2 file2entry3
Где short_list = ['str1', 'str2', 'str3']
и file1entery1, file2entry2... etc
приходит из файлов CSV у меня уже есть.
Я не смог получить все это в одной строке, как предлагалось, однако он указал мне в правильном направлении.
for f zip(glob.glob('*csv')):
df = pd.read_csv(f, header = None)
df = df.assign(id = os.path.basename(f)) # simpler than pulling from the array. Adds file name to each line.
dfs.append(df)
all_data = pd.concat(dfs)
Нет необходимости использовать '* LEN (ДФ)'. При присвоении скаляру новому столбцу значение применяется к каждой строке. – Parfait
Обратите внимание, что вам действительно не нужно использовать Pandas здесь. Вы можете просто использовать модуль 'csv'. –