#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)]