2015-01-07 82 views
1

我有一個由空列表組成的熊貓系列。通過索引將項目追加到熊貓列表中

>>> s = pd.Series([[]] * 20, index= range(0,20))

我想添加標籤通過索引某些元素。

>>> for i in [1,3,5,7,11]: 
...  s.loc[ i ].append('prime') 

,但是這是我一直得到:

>>> s 
0  [prime, prime, prime, prime, prime] 
1  [prime, prime, prime, prime, prime] 
2  [prime, prime, prime, prime, prime] 
3  [prime, prime, prime, prime, prime] 
4  [prime, prime, prime, prime, prime] 
5  [prime, prime, prime, prime, prime] 
6  [prime, prime, prime, prime, prime] 
7  [prime, prime, prime, prime, prime] 
8  [prime, prime, prime, prime, prime] 
9  [prime, prime, prime, prime, prime] 
10 [prime, prime, prime, prime, prime] 
11 [prime, prime, prime, prime, prime] 
12 [prime, prime, prime, prime, prime] 
13 [prime, prime, prime, prime, prime] 
14 [prime, prime, prime, prime, prime] 
15 [prime, prime, prime, prime, prime] 
16 [prime, prime, prime, prime, prime] 
17 [prime, prime, prime, prime, prime] 
18 [prime, prime, prime, prime, prime] 
19 [prime, prime, prime, prime, prime] 
dtype: object 

這是不是我想要的。

我想它是這樣的:

>>> s 
0  [] 
1  [prime] 
2  [] 
3  [prime] 
4  [] 
5  [prime] 
6  [] 
7  [prime] 
8  [] 
9  [] 
10 [] 
11 [prime] 
12 [] 
... 

我一直在敲打我的頭靠在桌子上這一個小時。總熊貓newb。

UPDATE

預期下的作品。

​​

我最終會在每個索引上想要多個'標記',這是一個回落的時刻。我仍然想知道爲什麼追加不起作用。

+1

不知道你是想什麼在這裏實現,但你可以只改變你的行這樣的:'s.iloc [I] = [「黃金」]' – EdChum

+1

要警告說:在Series和DataFrame中使用列表(或者更一般地說,非標量)作爲元素通常會導致頭痛,儘管它有時可以用作中間步驟。 – DSM

回答

1

試試這個:

s = pd.Series([[] for _ in range(20)], index= range(0,20)) 

您的問題是不是有幾種不同的空列表你有相同的列表多次引用。一個例子,讓你看到的問題:

>>> lists = [[]] * 5 
>>> lists 
[[], [], [], [], []] 
>>> lists[0].append(1) 
>>> lists 
[[1], [1], [1], [1], [1]]