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

Appending individual items to lists in pandas Series

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

如果您改为附加 None 会怎么样。

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

你应该使用 [ [] for x in range(0,8) ]

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

您还可以找到有用的词典。

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

lists[0] = [30]

returns

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