Pandas переименование столбцов при чтении CSV - PullRequest
2 голосов
/ 09 июля 2020

У меня есть несколько текстовых файлов в папке, которые я выводю, чтобы создать таблицу. Мне удалось успешно экспортировать таблицу в файл .csv. Проблема в том, что я хочу добавить заголовок к каждому из столбцов, и я хочу, чтобы имена заголовков были именем текстового файла. Каждый файл представляет собой столбец данных в таблице. Так, например, столбец 1 - это textfile.1. Я хочу добавить заголовок в столбец 1, в котором написано "textfile.1"

Вот мой рабочий код:

import os

path = r'C:/path/to/file'
folders = os.listdir(path) #raw string

import pandas as pd

df = pd.DataFrame()
df_interim = pd.DataFrame()

for f in folders:
    df_interim = pd.read_csv(
        os.path.join(path,f ,),
        header=None
    )
    #concatenate the data into the original dataframe
    frames = [df, df_interim]
    df = pd.concat(frames, axis=1)
df.to_csv('outputfile',index=False)

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Исправляя ваш код, вам просто нужно добавить параметр name и установить его для вашего имени файла:

df_interim = pd.read_csv(os.path.join(path, f),
                         header=None,
                         names=[f])

См. здесь для получения дополнительной информации об аргументах для read_csv.

Вот более простой способ сделать это, удалив l oop и df_interim;

df_final = pd.concat([
    pd.read_csv(os.path.join(path, f), header=None, names=[f], squeeze=True)
    for f in folders
  ], axis=1
)
0 голосов
/ 09 июля 2020

Допустим, все файлы в текущей папке имеют один столбец значений. Вы можете сделать это:

from glob import glob
import pandas as pd

df = pd.DataFrame()
for file in glob("*.txt"): # For every text file in the current folder
    with open(file,'r') as r: # Open the file in read mode
        df[file] = r.read().splitlines() # Add a column to df with the file name as the column header, and each line from the file will be each value in the column

print(df)
...