Jakiś joker wykonał loterię bazy danych/apletu do śledzenia problemów technicznych w naszej firmie. Żart jest taki, że kluczowa informacja została nazwana specjalnym znakiem ... znakiem liczbowym (hash, znak funta, \ u0023).Nazwa kolumny danych pandy: usuń specjalny znak ładujący
skrócie próbki:
KA# Issue Date Current Position
27144 1/9/2014 Accounting
27194 12/20/2012 Engineering
32474 4/21/2008 Engineering
32623-HOLD 4/25/2016 Engineering
32745 11/13/2012 SEPE
32812 10/30/2013 Engineering
32817 12/7/2012 Purchasing
32839 1/8/2013 SEPE
dane wyjściowe w tej tabeli (4K rzędy 15 kolumn) w pliku CSV i procesu w python3 jako dataframe PANDAS.
Generuję różne wyjścia. Jeśli używam coś takiego:
df.iloc[:,[0,3,1,8,9,10]]
uzyskać odpowiednią wydajność i kolumna klucz pokazuje się jako "KA#"
. (Kiedy mówię "kluczowa kolumna", mam na myśli "najważniejszy" ... NIE "indeks".) Zachowuję indeks seryjny)
Niestety, ludzie czasami nieporządkują się kolejnością kolumn w Lotusie między moim eksportem do csv, więc Nie mogę zagwarantować, że "KA#"
będzie jakimkolwiek konkretnym numerem kolumny. Chciałbym używać nazwy kolumn:
df.loc[:,["KA#","Issue Date","Current Position"]]
Ale kolumna "KA#"
jest wypełniona Nan.
Dzięki za pomoc, jaką możesz zaoferować.
Wreszcie, gdy próbuję zmienić nazwę "KA#"
po prostu "KA"
:
df['KA#'].name = 'KA'
rzuca KeyError i
df = df.rename(columns={"KA#": "ka"})
jest całkowicie ignorowany. Kolumna pojawia się jako "KA#"
.
Czy ktoś może wymyślić sposób na pozbycie się lub obsłużenie tego symbolu? W tym momencie zadowalam się nawet regexem.
Dzięki za pomoc, jaką możesz zaoferować.
I w szczególności przypisz ten wynik z powrotem do "df.columns". – chrisaycock
tak, możesz to zobaczyć w dokumentacji. – shivsn
Zajęło mi to mój problem, ponieważ miałem tylko jedną kolumnę z niewłaściwą postacią i chciałem, żeby zniknęła. Dlatego "odpowiedział". i "dziękuję" do shivsn. Jeśli chciałbym kierować na konkretną kolumnę, to byłaby to raczej niezgrabna metodologia. Myślę, że będę się tym martwił, kiedy do tego dojdę. –