我有一个由空列表组成的熊猫系列。
>>> 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。
更新
以下按预期工作。
s = pd.Series( [[]] * 20, index= range(0,20) )
>>> for i in [1,3,5,7,11]:
... s.loc[ i ] = s.loc[ i ] + ['prime']
我最终会想要多个标签'在每个指数上,这是暂时的回落。我仍然想知道追加为什么不起作用。
答案 0 :(得分: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]]