Сохранение нового списка из большего списка с помощью цикла

#python #pandas #list #for-loop

#python #pandas #Список #для цикла

Вопрос:

У меня есть большой список, из которого я извлекаю каждое n-е значение от первого значения до m-го значения для создания новых списков, и я использую цикл for . Мой вопрос в том, как мне создавать новую переменную списка каждый раз через цикл for?

В качестве простого примера у меня есть список:

 a=[1,2,3,4,1,2,3,4,1,2,3,4]
  

Который я пытаюсь преобразовать в:

 a1 = [1,1,1]
...
a4 = [4,4,4]
  

В качестве печатного вывода я получаю то, что хочу, когда запускаю код

 split = list(range(0,3))

for x in split:
   a_new = a[x::3]
   print(a_new)
  

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

В качестве альтернативы, если есть более элегантный способ просто преобразовать мой исходный список в фрейм данных pandas, где a1 — один столбец, a2 — следующий столбец и так далее, это тоже было бы здорово.

Спасибо.

Комментарии:

1. Если вы хотите использовать его в качестве столбца для фрейма данных, есть ли какие-либо проблемы с итеративным построением данных при разделении списка?

2. @EdekiOkoh Я не ожидаю, что это будет, но я не уверен, как это сделать. Было бы просто?

Ответ №1:

Вы можете создать словарь в цикле for, а затем преобразовать его в фрейм данных.

Попробуйте этот код:

 import pandas as pd

a=[1,2,3,4,1,2,3,4,1,2,3,4]

d = {}
for x in range(4):
   d['a' str(x 1)] = a[x::4]
   
print(d, 'n')

df = pd.DataFrame(d)

print(df.to_string(index=False))
  

Вывод

 {'a1': [1, 1, 1], 'a2': [2, 2, 2], 'a3': [3, 3, 3], 'a4': [4, 4, 4]}

 a1  a2  a3  a4
  1   2   3   4
  1   2   3   4
  1   2   3   4
  

Комментарии:

1. Это здорово @Mike67. Спасибо вам за это!

Ответ №2:

Если len(a) делится на n , то:

 n = 3
m = 4

a = [1,2,3,4,1,2,3,4,1,2,3,4]

pd.DataFrame(np.reshape(a, (n, m)), columns = ['a', 'b', 'c', 'd'])

    a   b   c   d
    1   2   3   4
    1   2   3   4
    1   2   3   4
  

Комментарии:

1. нет проблем, очевидно, добавьте имена столбцов лучшим способом, например [f’c{i}’ для i в диапазоне (m)]