列DataFrame Python中的求和器数组

时间:2019-05-22 11:18:43

标签: python pandas

我对DataFrame中的Arrays Column有问题 例如:我有此数据

CustomerNumber           ArraysDate
1                         [ 1 4 13 ]
2                         [ 3 ]
3                         [ 0 ]
4                         [ 2 60 30 40]

我要求和器求和ArrayDate中的元素 我创建一个函数

    def Caculator(n,x,value):
        v = 0
        for i in n-x:
            v = sum(value)
        return v

还有

    s['Sum'] = Caculator(s['n'],1,s['ArraysDate'])

n是对ArraysDate列的元素进行计数 而且我想要算子

Sum  = t1 + t2 +....+t_n-x

预期结果:

CustomerNumber           ArraysDate         Sum
1                         [ 1 4 13 ]         5
2                         [ 3 ]              0
3                         [ 0 ]              0
4                         [ 2 60 30 40]      92

3 个答案:

答案 0 :(得分:1)

您可以使用的IIUC:

df['Sum']=df.ArraysDate.apply(lambda x: sum(x[:len(x)-1]))
#or df.ArraysDate.str[:-1].apply(sum)
print(df)

   CustomerNumber       ArraysDate  Sum
0               1       [1, 4, 13]    5
1               2              [3]    0
2               3              [0]    0
3               4  [2, 60, 30, 40]   92

DF df = pd.DataFrame({'CustomerNumber': [1, 2, 3, 4], 'ArraysDate': [[1,4,13],[3],[0],[2,60,30,40]]})

答案 1 :(得分:0)

您可以像这样在Pandas DataFrame的ArraysDate列中求和:

import pandas as pd
import numpy as np

d={'CustomerNumber':pd.Series([1,2,3,4]),
  'ArraysDate':pd.Series([[1,4,13],[3],[0],[2,60,30,40]])}
df=pd.DataFrame(d)
df['sum']=[np.sum(i[0:(len(i)-1)]) for i in df['ArraysDate']]
print(df)

输出:

   CustomerNumber       ArraysDate   sum
0               1       [1, 4, 13]   5.0
1               2              [3]   0.0
2               3              [0]   0.0
3               4  [2, 60, 30, 40]  92.0

答案 2 :(得分:0)

也许是这样的:

def Caculator(x,arrayDates):
    vList = []
    for i in range(arrayDates.count()):
        v = 0
        for num in range(0, len(arrayDates[i])-x):
            v = v + arrayDates[i][num]
        vList.append(v)
    return vList

对于DataFrame:

data = [[1, [1, 4, 13]], [2, [3]], [3, [0]], [4, [2, 60, 30, 40]]]
s = pd.DataFrame(data, columns = ['CustomerNumber', 'ArraysDate'])

并调用如下函数:

s['Sum'] = Caculator(1,s['ArraysDate'])