扩展熊猫系列中的列表

时间:2017-05-01 16:32:19

标签: python pandas

我有一个看起来像这样的熊猫系列:

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]])

但这不起作用。

2 个答案:

答案 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