在同一行索引中插入两个不同循环中的值

2024-09-26 22:50:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始与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语法,我对如何处理这个问题有点茫然。谢谢你的帮助

预期产出:

首先,我的数据帧如下所示:

^{tb1}$

现在,让我们假设第一次在第一个循环中(对于x=1),rand=8,rand2=455,对于第二个循环的第一次(对于y=1),rand3=7

现在,我想将获得的值添加到最后一行,以使我的数据帧如下所示:

^{tb2}$

问题是,我真的不知道如何向熊猫表明我希望两个循环具有相同的索引。如果还不清楚,请告诉我


Tags: 数据inimportpandasdfforindexrange
1条回答
网友
1楼 · 发布于 2024-09-26 22:50:36

我不确定是否是这种情况,但在您的示例中,第二个循环处理的是rand2列,而不是rand3。另外,当您使用df.loc时,请使用ij的值(而不是df.index[i/j])

i = j = len(df)
for x in range(10):
    rand = random.randint(1,101)
    rand2 = random.randint(1,1001)
    df.loc[i, "rand"] = rand
    df.loc[i, "rand2"] = rand2
    i = i + 1
for y in range(10):
    rand3 = random.randint(1,11)
    df.loc[j, "rand3"] = rand3
    j = j + 1
print(df)  

    rand  rand2  rand3
0   10.0  541.0    1.0
1   52.0  632.0    3.0
2   99.0  789.0    4.0
3    8.0  251.0    1.0
4   37.0  902.0    6.0
5   65.0  717.0   11.0
6   95.0  345.0    6.0
7   81.0  218.0    9.0
8   90.0  233.0   10.0
9   15.0  918.0    6.0
10  62.0  775.0   10.0
11  27.0  955.0    4.0
12  43.0   17.0    2.0
13  69.0   41.0    8.0

这样做的方式如下:

>>> import numpy as np
>>> pd.DataFrame({
    'rand': np.random.randint(1,101,10), 
    'rand2': np.random.randint(1,1001,10), 
    'rand3': np.random.randint(1,11,10)})

   rand  rand2  rand3
0    50    877      5
1     9    929      5
2    23    605      7
3    52    205      4
4    39    341      6
5    17    455      7
6    11    505      7
7    68    647     10
8    66    920      6
9    63    386      9

相关问题 更多 >

    热门问题