我有一个看起来像这样的熊猫系列:
group
A [1,0,5,4,6,...]
B [2,2,0,1,9,...]
C [3,5,2,0,6,...]
我有类似的系列,我希望通过扩展每个列表来添加到现有系列中。我怎么能这样做?
我试过
for x in series:
x.extend(series[series.index[x]])
但这不起作用。
答案 0 :(得分:5)
考虑系列s
s = pd.Series([[1, 0], [2, 2], [4, 1]], list('ABC'), name='group')
s
A [1, 0]
B [2, 2]
C [4, 1]
Name: group, dtype: object
您只需添加类似系列即可扩展每个列表。 pandas
将使用基础对象__add__
方法来组合成对元素。对于list
,__add__
方法会连接列表。
s + s
A [1, 0, 1, 0]
B [2, 2, 2, 2]
C [4, 1, 4, 1]
Name: group, dtype: object
但是,如果元素为numpy.array
s = pd.Series([[1, 0], [2, 2], [4, 1]], list('ABC'), name='group')
s = s.apply(np.array)
在这种情况下,我确保它们是列表
s.apply(list) + s.apply(list)
A [1, 0, 1, 0]
B [2, 2, 2, 2]
C [4, 1, 4, 1]
Name: group, dtype: object
答案 1 :(得分:3)
具有add
函数的解决方案(来自piRSquared
的借来的数据样本):
s1 = s.add(s)
print (s1)
A [1, 0, 1, 0]
B [2, 2, 2, 2]
C [4, 1, 4, 1]
Name: group, dtype: object
编辑:
如果某些索引值不同,则会更复杂,因为需要reindex
所有索引值的union
,并按combine_first
将空NaN
替换为空列表:< / p>
s = pd.Series([[1, 0], [2, 2], [4, 1]], list('ABC'), name='group')
s1 = pd.Series([[3, 9], [6, 4]], list('AD'), name='group')
idx = s.index.union(s1.index)
s = s.reindex(idx).combine_first(pd.Series([[]], index=idx))
s1 = s1.reindex(idx).combine_first(pd.Series([[]], index=idx))
s2 = s.add(s1)
print (s2)
A [1, 0, 3, 9]
B [2, 2]
C [4, 1]
D [6, 4]
Name: group, dtype: object