При работе с разреженными данными в Python pandas вставка списков в определенные ячейки может оказаться сложной задачей. Попытка таких операций с использованием общих методов, таких как df.ix[1,'B'] = abc, часто приводит к ошибкам из-за несовпадающей длины ключей.
Попытки обойти проблему ошибка, заключая список в дополнительные квадратные скобки (например, df.ix[1,'B'] = [abc]) или используя строковые представления (например, df.ix[1,'B'] = ', '.join (abc)) неудовлетворительны, так как они вводят дополнительные элементы или изменяют предполагаемую структуру данных.
Более эффективный подход — использовать df.at вместо df.ix или df.loc. df.at специально нацелен на одну ячейку, устраняя двусмысленность, которая может привести к вышеупомянутым ошибкам.
import pandas as pd
# Create a dataframe with mixed data types
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': ['x', 'y', 'z']})
# Insert a list into cell 1B
df.at[1, 'B'] = ['m', 'n']
print(df)
Эта операция успешно вставляет ['m', 'n'] в ячейку 1B без каких-либо ошибок.
Важно отметить что столбец, в который вы собираетесь вставить список, должен иметь тип dtype, равный «объект». Если столбец имеет другой тип dtype, например int64, произойдет ошибка. Чтобы решить эту проблему, вы можете преобразовать dtype столбца перед попыткой вставки:
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [1,2,3]})
df['B'] = df['B'].astype('object')
# Now, list insertion will work as expected
df.at[1, 'B'] = [1, 2, 3]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3