Python 将单个项目添加到熊猫系列的列表中

Python 将单个项目添加到熊猫系列的列表中,python,list,pandas,append,series,Python,List,Pandas,Append,Series,我正在创建一个多索引熊猫系列,每个项目都是一个列表。首先是一个空列表,然后分别附加这些列表。然而,当我试图以一种天真的方式去做这件事时,我遇到了一个问题。在这个简单的示例中很容易复制: blah = pd.Series([[]]*8) blah[0].append(30) blah 我想得到的是: 0 [30] 1 [] 2 [] 3 [] 4 [] 5 [] 6 [] 7 [] 0 [30] 1 [30] 2 [30] 3

我正在创建一个多索引熊猫系列,每个项目都是一个列表。首先是一个空列表,然后分别附加这些列表。然而,当我试图以一种天真的方式去做这件事时,我遇到了一个问题。在这个简单的示例中很容易复制:

blah = pd.Series([[]]*8)
blah[0].append(30)
blah
我想得到的是:

0    [30]
1    []
2    []
3    []
4    []
5    []
6    []
7    []
0    [30]
1    [30]
2    [30]
3    [30]
4    [30]
5    [30]
6    [30]
7    [30]
相反,输出如下:

0    [30]
1    []
2    []
3    []
4    []
5    []
6    []
7    []
0    [30]
1    [30]
2    [30]
3    [30]
4    [30]
5    [30]
6    [30]
7    [30]
它不附加其中一个列表,而是附加具有相同值的所有列表

我的问题:这是一个bug还是我做错了什么?有更好的方法吗


(请记住,我实际上是在处理多索引系列,尽管我认为这对于这个特定问题并不重要)

如果您不添加任何索引,该怎么办

foo = [None]*30
foo[0] = 30

对于范围(0,8)内的x,您应该使用类似于
[]的东西


这将创建一个新列表(
[]
)8次,而不是引用同一列表的8次。

您还可以找到有用的词典

lists = {}
for i in range(8):
    lists[i] = []

lists[0] = [30]
返回

{0: [30], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: []}

这并不能回答问题:它给出了不同的结果。@Bruce错误的答案仍然是答案。投反对票,继续前进。我相信没有投票会更清楚。你明确地说那里什么都没有引用。。。你弄错了,或者你弄错了。谢谢你,这很有效!