Как создать переменную в Python со значением, вычисляемым с помощью другой переменной?

Привет! У тебя есть проблема в создании переменных `set_data_df1` до `N` внутри цикла. Вместо этого ты можешь использовать словарь, чтобы сохранить уникальные списки значений для каждого файла. Вот исправленный код:

```python
data_directory = '111'
list_file = []
for root, dirs, files in os.walk(data_directory):
    for filename in files:
        list_file.append(os.path.join(root, filename))

dfs = {}
set_data_dfs = {}
for i, file in enumerate(list_file):
    df = pd.read_excel(file)
    dfs[f'df{i+1}'] = df
    set_data_dfs[f'set_data_df{i+1}'] = set(df[name_column].tolist())
```

Теперь у тебя будет словарь `dfs`, в котором ключи - это `df1`, `df2`, и т.д., а значения - это соответствующие фреймы данных Pandas. А также словарь `set_data_dfs`, где ключи - `set_data_df1`, `set_data_df2`, и т.д., а значения - уникальные списки значений для каждого файла.
  • 12 октября 2023 г. 8:28
Ответы на вопрос 2
Если я правильно понял вопрос, вы хотите использовать значение одной переменной для вычисления значения другой переменной в Python.

В Python вы можете создать переменную со значением, вычисляемым с помощью другой переменной, просто присвоив ей это значение. Вот пример:

```python
x = 5
y = x + 3
print(y)  # Выведет 8
```

В этом примере значение переменной `x` равно 5, и мы вычисляем значение переменной `y`, прибавляя к `x` число 3. Затем мы выводим значение переменной `y`, которое равно 8.

Таким образом, чтобы создать переменную со значением, вычисляемым с помощью другой переменной, вам нужно просто присвоить этому значению новую переменную. Например, если вы хотите вычислить сумму двух переменных и сохранить ее в новой переменной, вы можете сделать это следующим образом:

```python
a = 5
b = 3
c = a + b
print(c)  # Выведет 8
```

В этом примере мы создаем две переменные `a` и `b`, присваиваем им значения 5 и 3 соответственно. Затем мы вычисляем сумму `a` и `b` и сохраняем результат в переменной `c`. Значение `c` будет равно 8.
a) Создай пустой список "dfs" и для каждого xlsx файла прочитай его в отдельный фрейм и добавь фрейм в список "dfs". Пример кода:

```python
dfs = []
for filename in filenames:
    df = pd.read_excel(filename)
    dfs.append(df)
```

где "filenames" - это список путей к xlsx файлам.

б) Если я правильно понял задачу, то у твоих файлов разные имена колонок, и тебе нужно найти общие колонки для всех фреймов. Для этого можно воспользоваться функцией "reduce" из модуля "functools" и функцией "np.intersect1d" из модуля "numpy", как показано в примере кода ниже:

```python
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]
common_columns = reduce(np.intersect1d, dfs_column_names)
print(common_columns)
```

Таким образом, ты найдешь общие колонки для любого количества фреймов. Не забудь адаптировать этот код под свои данные, заменив df1, df2, df3 на свои фреймы.

В дальнейшем, если ты хочешь выбрать только уникальные для всех фреймов колонки и объединить их в один фрейм, ты можешь использовать функцию "pd.concat". Для этого предварительно создай список "dfs" с фреймами, содержащими только общие колонки, как показано ниже:

```python
dfs = [df[common_columns] for df in dfs]
concatenated_df = pd.concat(dfs)
```

Где "dfs" - это список фреймов.
Похожие вопросы