首页 > 解决方案 > 有没有办法在熊猫数据框中附加一个列表?

问题描述

我在熊猫dataframe dfr中有一个列,其中有一个空列表。当我尝试附加它时,整个列都被更改了。

下面是附上的代码。

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

现在,当我运行它时,整个分配列都会发生变化。有人能帮我一下吗。我只需要i在每行的列表中有 1 个值。

在此处输入图像描述

标签: pythonpandas

解决方案


正如@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]

推荐阅读