«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу вставить список в определенную ячейку в кадре данных Python Pandas?

Как я могу вставить список в определенную ячейку в кадре данных Python Pandas?

Опубликовано 18 ноября 2024 г.
Просматривать:746

How Can I Insert a List into a Specific Cell in a Python Pandas Dataframe?

Вставить список в ячейку в кадре данных Python Pandas

Вставка списка в определенную ячейку в кадре данных Pandas может оказаться сложной задачей. Давайте рассмотрим различные подходы и потенциальные проблемы на основе данного примера:

Исходная проблема:

Кадр данных 'df' со следующей структурой:

    A  B
0  12  NaN
1  23  NaN

и список «abc», содержащий ['foo», 'bar']. Цель состоит в том, чтобы вставить этот список в ячейку 1B.

Усилия:

  1. df.ix[1,'B'] = abc: выдает ошибку ValueError из-за неравной длины ключей и значений.
  2. df.ix[1,'B'] = [abc]: вставляет список, содержащий список 'abc' вместо отдельных элементов.
  3. df.ix[1,'B'] = ', '.join(abc): вставляет строку вместо списка.
  4. df .ix[1,'B'] = [', '.join(abc)]: вставляет одноэлементный список, содержащий объединенные string.

Решение:

Устаревший метод set_value был заменен на at. Использование at гарантирует установку одного значения:

df.at[1, 'B'] = ['foo', 'bar']

Дополнительные соображения:

  • Убедитесь, что целевой столбец имеет dtype=object для вставки списка.
  • The тот же подход можно применить для вставки списков в ячейки, содержащие целые или строковые значения.
  • Однако при вставке списка в столбец, содержащий смешанные типы данных (целое и строковое), может возникнуть ошибка ValueError. Эту проблему можно решить, преобразуя столбец в dtype=object перед вставкой.

Обновленный пример:

Вставка списка 'abc' в df2.loc[ 1,'B'] и df3.loc[1,'B']:

df2 = pd.DataFrame({
    'A': [12],
    'B': [nan],
    'C': ['bla']
})

df3 = pd.DataFrame({
    'A': [12],
    'B': [nan],
    'C': ['bla bla'],
    'D': [['item1', 'item2'], [11, 12, 13]]
})

df2.loc[1, 'B'] = ['foo', 'bar']
df3.loc[1, 'B'] = ['foo', 'bar']
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3