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