Установить значения столбца Pandas в массив - PullRequest
0 голосов
/ 02 декабря 2018

У меня следующая проблема: у меня есть такой фрейм данных:

   col1   col2   col3
0   2       5      4
1   4       3      5
2   6       2      7 

Теперь у меня есть массив, например, a = [5,5,5], и я хочу вставить этот массив вcol3, но только в определенных строках (скажем, 0 и 2) и получить что-то вроде этого:

   col1   col2   col3
0   2       5    [5,5,5]
1   4       3      5
2   6       2    [5,5,5]

Проблема в том, что, когда я пытаюсь сделать:

 zip_df.at[[0,2],'col3'] = a 

я получаюследующая ошибка ValueError: Must have equal len keys and value when setting with an ndarray.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 02 декабря 2018

То, что вы пытаетесь, не рекомендуется. 1 Панды не предназначены для хранения списка в серии.Сказав это, вы можете явно определить ряд и назначить через update или loc.Примечание at используется для получения или установки одного значения * только 1013 *, а не нескольких значений, как в вашем случае.

a = [5, 5, 5]
indices = [0, 2]

df['col3'].update(pd.Series([a]*len(indices), index=indices))

# alternative:
# df.loc[indices, 'col3'] = pd.Series([a]*len(indices), index=indices)

print(df)

   col1  col2       col3
0     2     5  [5, 5, 5]
1     4     3          5
2     6     2  [5, 5, 5]

1 Для получения дополнительной информации ( источник ):

Не делайте этого .Панды никогда не были предназначены для хранения списков в сериях / колонках.Вы можете придумать дорогостоящие обходные пути, но это не рекомендуется.

Основная причина, по которой удерживать списки в серии не рекомендуется, заключается в том, что вы теряете векторизованную функциональность, связанную с использованием массивов NumPy, содержащихся в смежных блоках памяти.Ваша серия будет иметь тип object d, который представляет собой последовательность указателей, очень похожую на list.Вы потеряете преимущества с точки зрения памяти и производительности, а также доступа к оптимизированным методам Pandas.

См. Также В чем преимущества NumPy перед обычными списками Python? Аргументы в пользуПанды такие же, как и для NumPy.

...