python dataframe pandy upuść kolumnę za pomocą int
154
Rozumiem, że aby upuścić kolumnę, należy użyć df.drop („nazwa kolumny”, oś = 1). Czy istnieje sposób na usunięcie kolumny przy użyciu indeksu liczbowego zamiast nazwy kolumny?
Możesz usunąć kolumnę z iindeksu w następujący sposób:
df.drop(df.columns[i], axis=1)
Może to działać dziwnie, jeśli masz zduplikowane nazwy w kolumnach, więc aby to zrobić, możesz zmienić nazwę kolumny, którą chcesz usunąć, według nowej nazwy. Lub możesz zmienić przypisanie DataFrame w następujący sposób:
df = df.iloc[:,[j for j, c in enumerate(df.columns)if j != i]]
inplace=Truesłuży do wprowadzania zmian w samej ramce danych bez upuszczania kolumny na kopię ramki danych. Jeśli chcesz zachować oryginał w stanie nienaruszonym, użyj:
jeśli nie używasz inplace=True, będziesz musiał zrobić, df = df.drop()jeśli chcesz zobaczyć zmianę w dfsobie.
mion
Jak indeksować kolumny, jeśli muszę upuścić 100 kolumn, które są ciągłe w środku ramki danych.
Sai Kiran
36
Jeśli istnieje wiele kolumn o identycznych nazwach, rozwiązania podane tutaj do tej pory usuwają wszystkie kolumny, które mogą nie być tym, czego szukasz. Może się tak zdarzyć, jeśli ktoś próbuje usunąć zduplikowane kolumny z wyjątkiem jednej instancji. Poniższy przykład wyjaśnia tę sytuację:
# make a df with duplicate columns 'x'
df = pd.DataFrame({'x': range(5),'x':range(5),'y':range(6,11)}, columns =['x','x','y'])
dfOut[495]:
x x y000611172228333944410# attempting to drop the first column according to the solution offered so far
df.drop(df.columns[0], axis =1)
y06172839410
Jak widać, obie kolumny X zostały usunięte. Alternatywne rozwiązanie:
column_numbers =[x for x in range(df.shape[1])]# list of columns' integer indices
column_numbers .remove(0)#removing column integer index 0
df.iloc[:, column_numbers]#return all columns except the 0th column
x y0061172283394410
Jak widać, to naprawdę usunęło tylko zerową kolumnę (pierwszy „x”).
jeśli naprawdę chcesz to zrobić z liczbami całkowitymi (ale dlaczego?), możesz zbudować słownik.
col_dict ={x: col for x, col in enumerate(df.columns)}
wtedy df = df.drop(col_dict[0], 1)będzie działać zgodnie z życzeniem
edycja: możesz umieścić go w funkcji, która robi to za Ciebie, chociaż w ten sposób tworzy słownik za każdym razem, gdy go wywołasz
def drop_col_n(df, col_n_to_drop):
col_dict ={x: col for x, col in enumerate(df.columns)}return df.drop(col_dict[col_n_to_drop],1)
df = drop_col_n(df,2)
Odpowiedzi:
Możesz usunąć kolumnę z
i
indeksu w następujący sposób:Może to działać dziwnie, jeśli masz zduplikowane nazwy w kolumnach, więc aby to zrobić, możesz zmienić nazwę kolumny, którą chcesz usunąć, według nowej nazwy. Lub możesz zmienić przypisanie DataFrame w następujący sposób:
źródło
Upuść wiele kolumn w ten sposób:
inplace=True
służy do wprowadzania zmian w samej ramce danych bez upuszczania kolumny na kopię ramki danych. Jeśli chcesz zachować oryginał w stanie nienaruszonym, użyj:źródło
inplace=True
, będziesz musiał zrobić,df = df.drop()
jeśli chcesz zobaczyć zmianę wdf
sobie.Jeśli istnieje wiele kolumn o identycznych nazwach, rozwiązania podane tutaj do tej pory usuwają wszystkie kolumny, które mogą nie być tym, czego szukasz. Może się tak zdarzyć, jeśli ktoś próbuje usunąć zduplikowane kolumny z wyjątkiem jednej instancji. Poniższy przykład wyjaśnia tę sytuację:
Jak widać, obie kolumny X zostały usunięte. Alternatywne rozwiązanie:
Jak widać, to naprawdę usunęło tylko zerową kolumnę (pierwszy „x”).
źródło
Musisz zidentyfikować kolumny na podstawie ich pozycji w ramce danych. Na przykład, jeśli chcesz usunąć (usunąć) kolumnę nr 2, 3 i 5, będzie to:
źródło
Jeśli masz dwie kolumny o tej samej nazwie. Prostym sposobem jest ręczna zmiana nazw kolumn w następujący sposób: -
Następnie możesz upuścić przez indeks kolumn zgodnie z żądaniem, na przykład: -
df.column[1]
spadnie indeks 1.Pamiętaj, że oś 1 = kolumny, a oś 0 = wiersze.
źródło
jeśli naprawdę chcesz to zrobić z liczbami całkowitymi (ale dlaczego?), możesz zbudować słownik.
wtedy
df = df.drop(col_dict[0], 1)
będzie działać zgodnie z życzeniemedycja: możesz umieścić go w funkcji, która robi to za Ciebie, chociaż w ten sposób tworzy słownik za każdym razem, gdy go wywołasz
źródło
Możesz użyć następującego wiersza, aby upuścić pierwsze dwie kolumny (lub dowolną kolumnę, której nie potrzebujesz):
Odniesienie
źródło
Ponieważ może istnieć wiele kolumn o tej samej nazwie, powinniśmy najpierw zmienić nazwy kolumn. Oto kod rozwiązania.
źródło