Как задать имена столбцов в фрейме данных при объединении нескольких фреймов? - PullRequest
1 голос
/ 30 сентября 2019

У меня есть несколько файлов CSV, которые я читаю как фрейм данных. Мне нужно создать один фрейм данных, который содержит все эти данные из файлов CSV с соответствующими именами столбцов.

Я нашел это решение:

import pandas as pd
import glob

path = r'F:\\df_freeq_new_mostfreqpart\\' # use your path
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, sep = ";", index_col=None, usecols = 
    ['Unnamed: 0','counter_routes', 'percent_availability'])
    df.rename( columns={'Unnamed: 0':'meters'}, inplace=True )
    df = df[df.counter_routes>0]
    li.append(df)

frame = pd.concat(li, axis=1, ignore_index=True)

И я получаю фрейм данных со всеми своими данными, но яНе знаю, как можно установить имена столбцов вместо цифр: 1,2,3 .. Я хочу добиться следующего: оригинальное имя столбца + число, которое находится в имени исходного файла CSV. Пример имени файла CSV:

"dfFrequeny100_56"

, для этого файла мне нужно иметь такие столбцы, как:

'counter_routes_56', 'percent_availability_56'

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 30 сентября 2019

Я полагаю, вам нужно значение после _ с разделением и добавление к исходным именам столбцов +=:

for filename in all_files:
    df = pd.read_csv(filename, sep = ";", index_col=None, usecols = 
    ['Unnamed: 0','counter_routes', 'percent_availability'])
    df.rename( columns={'Unnamed: 0':'meters'}, inplace=True )
    df = df[df.counter_routes>0]
    df.columns += '_' + filename.split('_')[1].split('.')[0]
    print (df.head())
    li.append(df)
...