Массивы Caculator в Column DataFrame Python

У меня проблема со столбцом Arrays в DataFrame пример: у меня есть эти данные

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

Я хочу, чтобы caculator суммировал элемент в 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

Это тот же вопрос?: stackoverflow.com/questions/56248375/…

N. Arunoprayoch 22.05.2019 13:22

Пожалуйста, опубликуйте ожидаемый результат

Chris 22.05.2019 13:25

@Chris, я добавил Ожидаемый результат

Trinh Pham 22.05.2019 13:38

Конечно @Arunoprayoch

Trinh Pham 22.05.2019 13:39

@TrinhPham: Пожалуйста, не используйте фрагмент для форматирования кода, а просто пример кода. Фрагмент предназначен для кода javascript, который можно напрямую выполнить в браузере.

Serge Ballesta 22.05.2019 13:41
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
5
112
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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 = pd.DataFrame({'CustomerNumber': [1, 2, 3, 4], 'ArraysDate': [[1,4,13],[3],[0],[2,60,30,40]]})

Это хорошо, но я хочу добавить столбец sum_1 = t_n-x+1+..+tn. не могли бы вы подсказать, как рассчитать sum_1

Trinh Pham 22.05.2019 13:54

Да, это означает сумму элементов, за исключением тех, которые рассчитаны в «сумме».

Trinh Pham 22.05.2019 15:05

Да, но с CustomerNumber = 4, n = 4, x = 2. Тогда sum_1 = t(4-2+1) + t4 = t3+t4 = 70 . Мне нужна общая формула, где x - количество вариантов, это может быть 1,2,3 или 4. sum_1 = t(n-x+1)+...+t(n-1)+tn

Trinh Pham 22.05.2019 15:17

@TrinhPham, учитывая n = 2, можете ли вы поделиться ожидаемым результатом для всех строк? это: 17,3,0,70 ?

anky 22.05.2019 15:55

Конечно, это ожидаемый результат

Trinh Pham 22.05.2019 16:09

@TrinhPham, тогда как получится, если просто перевернуть слайсер на другую сторону df.ArraysDate.apply(lambda x: sum(x[len(x)-2:]))?

anky 22.05.2019 16:10

Хорошо, я проверю и сообщаю вам, хе-хе

Trinh Pham 22.05.2019 16:21

Вы можете сделать сумму в столбце ArraysDate в Pandas DataFrame следующим образом:

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

Может быть, что-то вроде:

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

Другие вопросы по теме