繁体   English   中英

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

[英]Saving a new list from a a larger list using a loop

我有一个大列表,我从第一个值到第 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)

但就像我说的,我希望以后能够使用这些列表。 (我想将列表用作数据框的列)。

或者,如果有一种更优雅的方法可以将我的原始列表简单地转换为熊猫数据框,其中 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM