我最近开始与pandas合作,我的问题如下:我有两个循环,每个循环生成10个值。我想做的是在数据帧的底部插入生成的值,这样两个循环的索引都是相同的
下面是一个模型示例,与我尝试的内容非常接近:
import pandas as pd
import random
randint = {'rand': [10,52,99,8],'rand2': [541,632,789,251], 'rand3': [1,3,4,1]}
df = pd.DataFrame(randint, columns = ['rand','rand2', "rand3"])
i = j = len(df)
for x in range(10):
rand = random.randint(1,101)
rand2 = random.randint(1,1001)
df.loc[df.index[i], "rand"] = rand
df.loc[df.index[i], "rand2"] = rand2
i = i + 1
for y in range(10):
rand3 = random.randint(1,11)
df.loc[df.index[j], "rand3"] = rand3
j = j + 1
print(df)
因此,我想要的是,例如,在第5行,第一组rand,rand2,rand3在同一行,等等(例如:对于x和y=1,我将在同一行有三个值,对于x和y=2,相同的东西,等等)。问题是,我读到使用pandas进行迭代不是一个好主意(显然,pandas给我带来了一个错误“索引4超出了轴0的范围,大小为4”),但我真的很难理解pandas语法,我对如何处理这个问题有点茫然。谢谢你的帮助
预期产出:
首先,我的数据帧如下所示:
现在,让我们假设第一次在第一个循环中(对于x=1),rand=8,rand2=455,对于第二个循环的第一次(对于y=1),rand3=7
现在,我想将获得的值添加到最后一行,以使我的数据帧如下所示:
问题是,我真的不知道如何向熊猫表明我希望两个循环具有相同的索引。如果还不清楚,请告诉我
我不确定是否是这种情况,但在您的示例中,第二个循环处理的是
rand2
列,而不是rand3
。另外,当您使用df.loc
时,请使用i
或j
的值(而不是df.index[i/j])这样做的方式如下:
相关问题 更多 >
编程相关推荐