【发布时间】:2015-01-07 22:17:46
【问题描述】:
我有一个由空列表组成的熊猫系列。
>>> 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 []
...
为此,我已经把头撞在桌子上一个小时了。熊猫新手总数。
更新
以下按预期工作。
s = pd.Series( [[]] * 20, index= range(0,20) )
>>> for i in [1,3,5,7,11]:
... s.loc[ i ] = s.loc[ i ] + ['prime']
我最终会希望每个索引上有多个“标签”,这是目前的回退。我仍然想知道为什么附加不起作用。
【问题讨论】:
-
不确定您要在这里实现什么,但您可以将您的行改为:
s.iloc[ i ]=['prime'] -
请注意:将列表(或更一般地说,非标量)作为 Series 和 DataFrames 中的元素通常会让人头疼,尽管它有时可用作中间步骤。