@coldspeed статус-по-воздуховоду-записано-вместе-работает-достаточно-достаточно :)

аем, что стандартный метод установки одной ячейки используетat или жеiat, Тем не менее, я заметил интересное поведение, которое мне было интересно, может ли кто-нибудь объяснить.

В решенииэтот вопросЯ сталкиваюсь со странным поведениемloc.

# Setup.

pd.__version__
# '0.24.0rc1'

df = pd.DataFrame({'A': [12, 23], 'B': [['a', 'b'], ['c', 'd']]})
df
    A       B
0  12  [a, b]
1  23  [c, d]

Чтобы установить ячейку (1, 'B'), достаточно сделать это с помощью, какdf.at[1, 'B'] = ..., Но с loc я сначала попробовал это, которое не сработало:

df.loc[1, 'B'] = ['m', 'n', 'o', 'p'] 
# ValueError: Must have equal len keys and value when setting with an iterable

Итак, я попробовал (что тоже не удалось)

df.loc[1, 'B'] = [['m', 'n', 'o', 'p']]
# ValueError: Must have equal len keys and value when setting with an ndarray

я думалloc также как-то сможет взять здесь вложенные списки. В странном повороте событий,это код работал:

df.loc[1, 'B'] = [['m'], ['n'], ['o'], ['p']]
df

    A             B
0  12        [a, b]
1  23  [m, n, o, p]

Почемуloc работать таким образом? Кроме того, если вы добавите еще один элемент в любой из списков, он провалится:

df.loc[1, 'B'] = [['m'], ['n'], ['o'], ['p', 'q']]
# ValueError: Must have equal len keys and value when setting with an iterable

Пустые списки тоже не работают. Кажется бессмысленным вкладывать каждый элемент в свой список.

Почемуloc сделай это? Это документированное поведение или ошибка?

Ответы на вопрос(1)

Ваш ответ на вопрос