我需要将每个迭代结果另存为新列表或数据框。我可以打印结果。但是我需要在工作的另一步骤中使用它们。我需要将每个数组保存在项目中。
import numpy as np
import pandas as pd
data = pd.DataFrame()
m =np.random.randint(1, 30, size = (10, 3))
df = pd.DataFrame(m, columns = ["var1", "var2", "var3"])
for i in range(0, len(df)+1):
for j in range(0, len(df)+1):
if i-j==3:
b = df.iloc[j:i]
print(b)
输出
var1 var2 var3
0 12 1 26
1 2 2 20
2 2 8 1
var1 var2 var3
1 2 2 20
2 2 8 1
3 2 5 26
var1 var2 var3
2 2 8 1
3 2 5 26
4 18 19 23
var1 var2 var3
3 2 5 26
4 18 19 23
5 10 18 17
var1 var2 var3
4 18 19 23
5 10 18 17
6 14 2 16
var1 var2 var3
5 10 18 17
6 14 2 16
7 15 19 23
var1 var2 var3
6 14 2 16
7 15 19 23
8 6 27 8
var1 var2 var3
7 15 19 23
8 6 27 8
9 11 1 11
当我尝试将它们保存到新数组中时,我尝试在下面添加此代码;
import numpy as np
import pandas as pd
data = pd.DataFrame()
m =np.random.randint(1, 30, size = (10, 3))
df = pd.DataFrame(m, columns = ["var1", "var2", "var3"])
for i in range(0, len(df)+1):
for j in range(0, len(df)+1):
if i-j==3:
b = df.iloc[j:i]
for k in range (0,9):
a = "erkan_" + str(k+1)
globals()["erkan_%s" % (j)] = b
print("{0} = {1}". format(a, b))
它创建列表名称为erkan_1,erkan_2,...,erkan_8 但保存最后的结果。你能帮我吗?
答案 0 :(得分:0)
您可以创建一个列表,并将每次迭代的结果添加到列表中,如下所示:
import numpy as np
import pandas as pd
m =np.random.randint(1, 30, size = (10, 3))
df = pd.DataFrame(m, columns = ["var1", "var2", "var3"])
dfs = []
for i in range(0, len(df)+1):
for j in range(0, len(df)+1):
if i-j==3:
dfs.append(df.iloc[j:i])
dfs
是具有每次迭代结果的列表。
您还可以使用pd.concat
从DataFrame
创建唯一的dfs
:
pd.concat(dfs)
Output:
var1 var2 var3
0 6 10 5
1 16 10 15
2 13 2 17
1 16 10 15
2 13 2 17
3 12 18 9
2 13 2 17
3 12 18 9
4 9 29 1
3 12 18 9
4 9 29 1
5 6 16 22
4 9 29 1
5 6 16 22
6 19 9 23
5 6 16 22
6 19 9 23
7 11 24 14
6 19 9 23
7 11 24 14
8 13 2 26
7 11 24 14
8 13 2 26
9 9 20 21
答案 1 :(得分:0)
感谢您的帮助,但这不是我想要的。我想将每三行另存为(3x3)矩阵。
erkan_1
0 6 10 5
1 16 10 15
2 13 2 17
erkan_2
1 16 10 15
2 13 2 17
3 12 18 9
.
.
.
如何将它们保存到新的df或系列中?这是用于生成列表名称并为其添加值的代码。但是不能正常工作。