是否可以在熊猫数据框中添加列表? [重复]

问题描述 投票:3回答:2

我在pandasdataframedfr中有一列,其中有一个空列表。当我尝试附加它时,整个列都会更改。

下面是附带的代码。

N = 10
Nr = list(range(10))
dfr = pd.DataFrame(Nr,columns = ['ID'])
dfr['Assignment'] = [[]] * dfr.shape[0]
for i in range(N):
    dfr.loc[i][1].append(i)    
dfr

现在,当我运行此命令时,整个分配列都会更改。有人能帮我一下吗。我只需要在每行的列表中有1个值i

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS96SjU3WC5wbmcifQ==” alt =“在此处输入图像描述”>

python pandas
2个回答
0
投票

比遍历整个数据帧更容易和更快的方法是创建具有所需值的序列。如果我正确理解,则与您的预期输出相符:

assignment = []
for i in range(N):
    assignment.append([i])
dfr['Assignment'] = assignment
print(dfr)

输出:

  ID Assignment
0   0        [0]
1   1        [1]
2   2        [2]
3   3        [3]
4   4        [4]
5   5        [5]
6   6        [6]
7   7        [7]
8   8        [8]
9   9        [9]

0
投票

正如@AMC所提到的,发生这种情况的原因是,数据帧单元中的列表是相同的。结果,每次在将数字附加到同一列表时都要遍历数据帧单元时。因此,建议您为每个单元格创建一个列表,如下所示:

for i in range(N):
    dfr.at[i,'Assignment'] = [i]

   ID Assignment
0   0        [0]
1   1        [1]
2   2        [2]
3   3        [3]
4   4        [4]
5   5        [5]
6   6        [6]
7   7        [7]
8   8        [8]
9   9        [9]

然后您可以独立更新这些单元格:

for i in range(N):
    dfr.at[i,'Assignment'].append(i+1) 

   ID Assignment
0   0     [0, 1]
1   1     [1, 2]
2   2     [2, 3]
3   3     [3, 4]
4   4     [4, 5]
5   5     [5, 6]
6   6     [6, 7]
7   7     [7, 8]
8   8     [8, 9]
9   9    [9, 10]
© www.soinside.com 2019 - 2024. All rights reserved.