将单个项目附加到pandas系列中的列表

时间:2015-04-10 11:30:19

标签: python list pandas append series

我正在创建一个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系列,但我认为这对于这个特定问题并不重要)

3 个答案:

答案 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