Чтение нескольких CSV, каждый столбец имеет свое имя CSV - PullRequest
0 голосов
/ 11 февраля 2020

Подводя итог, мне нужно, чтобы каждый столбец как имя, которое имеет файл CSV.

Это то, что я сделал до сих пор:

path = r'C:\Users\dfgdfsgsfg\Untitled Folder\tickers' # use your path
all_files = glob.glob(os.path.join(path, "*.csv"))     # advisable to use os.path.join as this makes concatenation OS independent

df_from_each_file = (pd.read_csv(f , parse_dates=True, index_col="date") for f in all_files)

concat = pd.concat(df_from_each_file, axis=1)

df = concat['PriceUSD']

df.columns = [ ??????? ] #what do I put in here?

Это то, что я получить, когда я не называю столбцы

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Если вас действительно интересует только один столбец из всех этих CSV-файлов, то при анализе csv просто обрежьте его до нужного столбца:

def getPriceUSD(filename):
    """reads csv file then returns dataframe with just the column 'PriceUSD'
    with the filename as the column title"""
    data = pd.read_csv(f , parse_dates=True, index_col="date")
    data = data["PriceUSD"]
    data.columns = [filename]
    return data

Затем объедините все уже проанализированные и отформатированные столбцы вместе:

df = pd.concat(map(getPriceUSD, all_files), axis=1)

И перед тем, как спросить, если вы не хотите указывать полный путь, используйте os.path.basename(filename) для столбца вместо filename

0 голосов
/ 11 февраля 2020

я тоже попробовал это, но не тихо результаты, которые я хотел

all_files = glob.glob(os.path.join(path, "*.csv"))     # advisable to use os.path.join as this makes concatenation OS independent

df_from_each_file = (pd.read_csv(f , parse_dates=True, index_col="date").assign(filename = f) for f in all_files)

concat = pd.concat(df_from_each_file, axis=1)

df = concat['PriceUSD']

df.columns = all_files[:-2]

df

РЕЗУЛЬТАТ

...