Метод Assign использует именованные аргументы для обозначения имен столбцов и отлично работает для имен столбцов, которые являются строками, но pandas поддерживает использование произвольных значений. объекты Python в качестве имен столбцов.
Предположим, у меня есть DataFrame с целыми числами в качестве «имен» столбцов:
Код: Выделить всё
import pandas as pd
df = pd.DataFrame({
0: [1, 2, 3],
1: [4, 5, 6]})
Это не работает:
Код: Выделить всё
df.assign(0=df[[0]] + 1)
Код: Выделить всё
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
Код: Выделить всё
df.assign(**{0: df[[0]] + 1})
Код: Выделить всё
TypeError: keywords must be strings
Код: Выделить всё
df_shallow_copy = df
df[[0]] = df[[0]] + 1
Я также мог бы сделать полную глубокую копию всех столбцов, но это потребует дублирования данных в памяти и выполнения избыточных операций:
Код: Выделить всё
df_shallow_copy = df
df = df.copy()
df[[0]] = df[[0]] + 1
Подробнее здесь: https://stackoverflow.com/questions/725 ... e-or-index
Мобильная версия