Обновите Dataframe, повторяя его - Python - PullRequest
1 голос
/ 26 апреля 2020

Я впервые работаю с DataFrame, и я застрял в точке, где мне нужно обновить DataFrame.

Мой объект данных имеет несколько базовых c значений, таких как userId, userName, address, и затем мне нужно вызвать модель, которая возвращает список значений (в настоящее время 36 значений). Мне нужно добавить эти значения в существующий объект dataframe. Либо в одной ячейке, либо в нескольких ячейках в одной строке.

Но я получаю разные ошибки при попытке использовать разные методы.

Это мой текущий Dataframe:

UserId UserName Address 
1      User1    Add1
2      User2    Add2

Это то, что я хочу сделать:

UserId UserName Address Res
1      User1    Add1    [1,2,3...36]
2      User2    Add2    [1,2,3...36]

Или что-то вроде этого:

UserId UserName Address Res1 Res2 Res3... Res36
1      User1    Add1    1      2    3 ... 36
2      User2    Add2    1      2    3 ... 36

В настоящее время я использую это method ..

for index, row in rawData.iterrows():
    res = calculateData(row)
    rawData['res'] = pd.Series(res, index=rawData.index)

Выдает эту ошибку:

ValueError: Длина переданных значений равна 36, индекс подразумевает 96.

При отладке Я узнал, что он пытается добавить все значения (36) для каждой строки (96) в моем фрейме данных, в то время как я пытаюсь добавить его в ячейку индекса. Я тоже попробовал несколько разных методов, но все, что я получил, это ошибка длины, потому что каждый метод добавляет список в каждую строку.

Любая помощь о том, как мне достичь желаемого результата?

1 Ответ

1 голос
/ 26 апреля 2020

Использовать понимание списка по индексу фрейма данных и вызывать функцию calculateData внутри понимания списка.

Предположим, ваша функция calculateData определяется следующим образом:

def calculateData(x):
    return np.arange(36) + x.name


rawData['res'] = [calculateData(rawData.loc[i]) for i in rawData.index]

Out[20]:
   UserId UserName Address                                                res
0       1    User1    Add1  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
1       2    User2    Add2  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...