使用循环从较大的列表中保存新列表



我有一个大列表,从第一个值到第m个值,我每隔第n个值就提取一个列表来创建新列表,我使用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)

但正如我所说,我希望以后能够使用这些列表。(我想将列表用作数据帧的列(。

或者如果有一种更优雅的方法可以简单地将我的原始列表转换为panda数据帧,a1是一列,a2是下一列,依此类推,那也太好了。

谢谢。

您可以在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

如果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

最新更新