添加熊猫系列列表

时间:2018-12-19 20:01:53

标签: python pandas series

我有一个熊猫系列对象列表。我想将所有这些系列加起来,以便具有相同索引的行将其值加在一起,而具有唯一索引的行将被添加。除了访问第一个Series对象并遍历和使用Series add函数之外,还有没有更整洁的方法了?我知道对于串联数据框,可以传递一个数据框对象列表,但是我还没有找到类似的方法来添加序列。

背景:我有非常大的数据集,其中每个数据集都分为多个数据帧块。对于每个数据框块,我在每一列上进行了一个values_count运算,从而得到了该序列,并从本质上得到了一个列表列表。使用列表推导,我一次可以为所有块获取一列,但是我需要将这些value_counts加在一起。

for vcl in allvc:
    #vcl is a list where each element is a list of value counts
    lengthvcl = len(vcl)
    for x in range(lengthvcl):
        lst2 = [item(x) for item in vcl]
        #what to do next...

1 个答案:

答案 0 :(得分:1)

reduce + pd.Series.add

可以通过functools.reducepd.Series.add使用一个基于Pandas的解决方案:

from functools import reduce, partial

s1 = pd.Series([1, 2, 3])
s2 = pd.Series([4, 5, 6, 7])
s3 = pd.Series([8, 9, 10, 11, 12])

adder = partial(pd.Series.add, fill_value=0)
res = reduce(adder, [s1, s2, s3])

print(res)

0    13.0
1    16.0
2    19.0
3    18.0
4    12.0
dtype: float64

pd.concat + pd.DataFrame.sum

reduce解决方案是通用的,因为adder可以替换为任意函数。为了求和,您还可以首先通过串联序列来创建数据框:

res = pd.concat([s1, s2, s3], axis=1).sum(1)