Сбрасываем колонку во время прохождения цикла - Панды - PullRequest
0 голосов
/ 11 октября 2018

У меня есть два основных DataFrames, и я объединяю их в список с именем dfCombo:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.arange(12,24).reshape(3,4), columns=['A', 'B', 'C', 'D'])
dfCombo = [df, df2]

Они оба DF 3x4 с 4 столбцами A, B, C, D.

Я могу использовать цикл for для добавления столбца в DF со следующим кодом:

for df3 in dfCombo:
    df3['E'] = df3['A'] + df3['B']

С этим и у df, и у df2 будет новый столбец E. Однако, когда я пытаюсь отброситьдля столбца, использующего этот метод с приведенным ниже кодом, столбцы не удаляются:

for df3 in dfCombo:
    df3 = df3.drop('B', axis = 1)

или

for df3 in dfCombo:
    df3 = df3.drop(columns = ['B'])

Если я использую один и тот же код на одном DF, столбец удаляется:

df2 = df2.drop('B', axis = 1)

или

df2 = df2.drop(columns = ['B'])

Если бы вы могли помочь мне понять, что происходит, я был бы очень признателен.

1 Ответ

0 голосов
/ 11 октября 2018

Вам необходимо использовать inplace=True:

for df3 in dfCombo:
    df3.drop('B', axis = 1, inplace=True)

, который возвращает:

   A   C   D   E
0  0   2   3   1
1  4   6   7   9
2  8  10  11  17

    A   C   D   E
0  12  14  15  25
1  16  18  19  33
2  20  22  23  41

Значение по умолчанию inplace=False предназначено для назначения обратно исходному фрейму данных, поскольку оно возвращаетновая копия.Однако inplace=True работает с той же копией и возвращает None, поэтому нет необходимости присваивать исходный кадр данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...