我正在创建一个Multiindexed pandas系列,每个项目都是一个列表。首先是一个空列表,然后我单独附加每个列表。然而,当我试图以天真的方式做到这一点时,我遇到了一个问题。在这个简单的例子中很容易复制:
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]
不是附加其中一个列表,而是将所有列表附加相同的值。
我的问题:这是一个错误还是我做错了什么?有没有更好的方法呢?
(请记住,我实际上正在使用Multiindex系列,但我认为这对于这个特定问题并不重要)
答案 0 :(得分:3)
您应该使用[ [] for x in range(0,8) ]
这将创建一个新列表([]
)8次,而不是引用相同列表的8倍。
答案 1 :(得分:1)
您还可以找到有用的词典。
lists = {}
for i in range(8):
lists[i] = []
lists[0] = [30]
返回
{0: [30], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: []}
答案 2 :(得分:-1)
如果您追加None,该怎么办?
foo = [None]*30
foo[0] = 30