• Python cоздание переменной с значением генерируемой переменной?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну если ты только изучаешь python, зачем тебе pandas. Код не надо править его нужно выкидывать.

    a) Ты хочешь прочитать каждый xlsx файл в отдельный фрейм, это нормально. Создаешь пустой список и складываешь в него фреймы.
    dfs = []
    for filename in fileanmes:
        df = pd.read_excel(filename)
        dfs.append(df)

    где filenames твои пути для xlsx файлов.

    б) Задача не ясна. На сколько я понял у этих файлов разные имена колонок и надо выбрать общий для всех набор.

    from functools import reduce
    import numpy as np
    
    df1 = pd.DataFrame({
        'A':[1],
        'B':[2]
    })
    
    df2 = pd.DataFrame({
        'A':[1],
        'C':[2]
    })
    
    df3 = pd.DataFrame({
        'A':[1],
        'D':[2]
    })
    
    dfs_column_names = [df1.columns, df2.columns, df3.columns]
    print(reduce(np.intersect1d, dfs_column_names))
    Вот так ты можешь найти общие колонки у любого количества фреймов.
    Естественно тебе не нужно хардкодить список с колонками прям в первом цикле заноси не только фрейм в список, но и в другой список заноси его колонки потом вне списка сохрани общий набор колонок как я привел в примере.

    Ну и я так понимаю в дальнейшем ты собираешься выбрать по уникальным для всех фреймов колонкам и собрать все в единый фрейм. pd.concat(dfs). Где dfs это список фреймов, с едиными колонками. То есть предварительно, ты как я показал нашел common_columns. и затеам dfs=[df[common_columns] for df in dfs]. И затем конкатенируешь.
    Ответ написан
    4 комментария
  • Как создать переменную с рандомным названием в python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    В порядке бреда:
    import random
    # создаем случайное имя переменной из 5 символов и присваиваем, к примеру - числу
    # вы можете добавить свой алгоритм для генерации рандомного названия
    locals()[''.join(map(lambda _:random.choice(['a', 'b', 'c', 'd', 'e', 'f']), range(5)))] = 42
    
    # смотрим какие переменные есть в нашей области видимости, и видим переменную подпадающую под нашу
    locals()
    # {..., 'ebfac': 42}
    
    #  выводим значение переменной
    >>> print(ebfac)
    # 42

    Поздравляю - вы создали переменную с рандомным названием.

    PS Такое решение ожидали? Или просто толком вопрос не смогли сформулировать?
    Ответ написан
    3 комментария