Предположим, у меня есть DataFrame так:Панды удалить столбец по индексу
>>> df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['a','b','b'])
>>> df
a b b
0 1 2 3
1 4 5 6
2 7 8 9
И я хочу, чтобы удалить вторую 'b'
колонку. Если я просто использовать del
заявления, это будет удалить оба 'b'
колонок:
>>> del df['b']
>>> df
a
0 1
1 4
2 7
можно выбрать столбец по индексу с .iloc[]
и переназначить DataFrame, но как я могу удалить только второй столбец 'b'
, например, с помощью индекса?
Это интересно. Переназначение звучит соответствующим образом. Думая дважды, вы знаете, что хотите удалить второй 'b', не основанный на именах столбцов, поскольку у вас есть дубликаты, но действительно по индексу. Таким образом, ваш алгоритм каким-то образом использует этот индекс. Так почему бы просто не изменить столбцы на индекс, основанный в этом случае? – Boud
@Boud хорошее предложение, на самом деле я мог бы переименовать все столбцы, которые я хочу удалить, а затем удалить по имени, попробует, когда доберется до дома –
afaik, 'del df ['b']' переводит команду block manager для удаления относительных элементы из всех блоков, т.е. примерно равны переназначению 'df = df.iloc [:,: 2]' – alko