У меня есть сотни данных, скажем, имя df1, ..., df250, мне нужно построить список по столбцу этих данных. Обычно я делал вручную, но сегодня данных много, и склонны к ошибкам

Вот что я сделал

list1 = df1['customer_id'].tolist()
list2 = df2['customer_id'].tolist()
..
list250 = df250['customer_id'].tolist()

Это так вручную, мы можем сделать это проще?

2
Nabih Bawazir 21 Авг 2018 в 16:44

3 ответа

Лучший ответ

Использование функции exec позволяет выполнять код Python, хранящийся в строке:

for i in range(1,251):
   s = "list"+str(i)+" = df"+str(i)+"['customer_id'].tolist()"
   exec(s)
1
Sharku 23 Авг 2018 в 06:51

Я бы использовал следующий код. В этом случае нет необходимости вручную создавать список DataFrames.

cust_lists = {'list{}'.format(i): globals()['df{}'.format(i)]['customer_id'].tolist()
                   for i in range(1, 251)}

Теперь вы можете получить доступ к спискам из dict cust_lists по имени, например так:

`cust_lists['list1']`

Или

`list1`
1
Nabih Bawazir 21 Авг 2018 в 14:05

Более простой способ - сделать шаг назад и убедиться, что вы поместили свои кадры данных в коллекцию, например list или dict. Затем вы можете легко выполнять операции масштабируемым образом.

Например:

dfs = {1: df1, 2: df2, 3: df3, ... , 250: df250}

lists = {k: v['customer_id'].tolist() for k, v in dfs.items()}

Затем вы можете получить доступ к результатам как lists[1], lists[2] и т. Д.

Есть и другие преимущества. Например, вы больше не загрязняете пространство имен, вы экономите усилия на явном определении имен переменных, вы можете легко хранить и переносить связанные коллекции объектов.

3
jpp 21 Авг 2018 в 13:48
51950162