#python #pandas #dataframe #csv
#python #pandas #фрейм данных #csv
Вопрос:
Я просмотрел, возможно, дюжину вариантов вопроса «Как построить фрейм данных строка за строкой», но ни одно из решений не сработало для меня. Таким образом, хотя это часто задаваемый вопрос, мой случай достаточно уникален, чтобы быть допустимым вопросом. Я думаю, проблема может заключаться в том, что я беру каждую строку из другого csv. Этот код демонстрирует, что я успешно создаю фреймы данных в цикле:
onlyfiles = list_of_csvs
for idx, f in enumerate(onlyfiles):
row = pd.read_csv(mypath f,sep="|").iloc[0:1]
Но строки являются отдельными фреймами данных и не могут быть объединены (пока). Я попытался выполнить следующее:
df = pd.DataFrame()
for idx, f in enumerate(onlyfiles):
row = pd.read_csv(path f,sep="|").iloc[0:1]
df.iloc(idx) = row
Который возвращает
df.loc(idx) = row
^
SyntaxError: can't assign to function call
Я думаю, проблема в том, что каждая строка или фрейм данных имеет свои собственные заголовки. Я тоже пробовал df.loc(idx) = row[1]
, но это тоже не работает (где мы берем row[:] when idx = 0
). Ни iloc(idx) or loc(idx)
то, ни другое не работает.
В конце концов, мне нужен один фрейм данных, который содержит заголовок (имена столбцов) из первого фрейма данных, а затем n строк, где n — количество файлов.
Ответ №1:
Попробуйте pd.concat()
.
Обратите внимание, вы можете прочитать только первую строку из файла напрямую, вместо того, чтобы читать в файле, а затем ограничиваться первой строкой. передайте параметр nrows=1
в pd.read_csv.
onlyfiles = list_of_csvs
df_joint = pd.DataFrame()
for f in enumerate(onlyfiles):
df_ = pd.read_csv(mypath f,sep="|", nrows=1)
df_joint = pd.concat([df_joint, df_])