【问题标题】:Saving a new list from a a larger list using a loop使用循环从大列表中保存新列表
【发布时间】:2021-02-13 11:29:45
【问题描述】:

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

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

或者如果有一种更优雅的方法可以简单地将我的原始列表转换为 pandas 数据框,其中 a1 为一列,a2 为下一列,依此类推,那也很棒。

谢谢。

【问题讨论】:

  • 如果您想将其用作数据框的列,在拆分列表时迭代构建数据是否有任何问题?
  • @EdekiOkoh 我不希望会有,但我不确定该怎么做。会很简单吗?

标签: python pandas list for-loop


【解决方案1】:

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

【讨论】:

  • 没问题,显然添加列名更好,比如[f'c{i}' for i in range(m)]
【解决方案2】:

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

【讨论】:

  • 这很棒@Mike67。谢谢你!
猜你喜欢
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-13
相关资源
最近更新 更多