我是Python新手,有一个基本问题。我有一个空数据框Resulttable,其中包含A B和C列,我想继续填写一些计算的答案,这些计算在由循环索引n表示的循环中运行。对于前。我想将值12存储在A列的第n行中,将35存储在B列的第n行中,依此类推,对于整个n范围。
我尝试过类似的事情
Resulttable['A'].iloc[n] = 12
Resulttable['B'].iloc[n] = 35
对于n的第一个值n = 0,我得到一个错误的单个位置索引器越界。 我该如何解决?谢谢!
答案 0 :(得分:0)
您可以先创建一个空的熊猫数据框,然后在计算时逐行追加。在您的范围内,如果要迭代0-12,则需要指定一个比希望的最大值高的值,即range(0,13)。
import pandas as pd
df = pd.DataFrame([], columns=["A", "B", "C"])
for i in range(0, 13):
x = i**1
y = i**2
z = i**3
df_tmp = pd.DataFrame([(x, y, z)], columns=["A", "B", "C"])
df = df.append(df_tmp)
df = df.reset_index()
这将导致如下所示的DataFrame:
df.head()
index A B C
0 0 0 0 0
1 0 1 1 1
2 0 2 4 8
3 0 3 9 27
4 0 4 16 64
答案 1 :(得分:0)
无法填充像这样的空数据框。由于您的数据框中没有任何条目,例如
Resulttable['A'].iloc[n]
将始终导致您描述的IndexError。 与其尝试像这样填充数据框,不如将循环的结果更好地存储在一个可以称为“ result_list”的列表中。然后,您可以像这样使用列表创建数据框:
Resulttable= pd.DataFrame({"A": result_list})
如果您要在数据框的另一列中存储另一个结果列表,例如result_list2,则可以这样创建数据框:
Resulttable= pd.DataFrame({"A": result_list, "B": result_list2})
如果已经创建了“ Resulttable”,则可以添加B列
Resulttable["B"] = result_list2
希望我能帮助您。