Czy istnieje sposób na zachowanie kolejności kolumn w pliku csv podczas czytania i pisania za pomocą Pand Python? Na przykład w tym kodzie pliki wyjściowe mogą być inne, ponieważ kolumny nie są zachowywane.Zachowanie porządku kolumn w Pythonie Pandy DataFrame
Odpowiedz
Wydaje się, że błąd w aktualnej wersji Pandy ('0.11.0'), który oznacza, że odpowiedź Mattiego Johna nie zadziała. Jeśli określisz kolumny do zapisywania do pliku, zostaną one zapisane w kolejności alfabetycznej, ale po prostu ponownie oznaczone etykietą zgodnie z listą w cols. Na przykład, ten kod:
import pandas
dfdict={}
dfdict["a"]=[1,2,3,4]
dfdict["b"]=[5,6,7,8]
dfdict["c"]=[9,10,11,12]
df=pandas.DataFrame(dfdict)
df.to_csv("dfTest.txt","\t",header=True,cols=["b","a","c"])
wyniki w tym (błędnej) Wyjście:
b a c
0 1 5 9
1 2 6 10
2 3 7 11
3 4 8 12
Można sprawdzić, która wersja pandy zostały zainstalowane przez wykonanie:
pandas.version.version
Dokumentacja to_csv to here
Wygląda na to, że jest to znany błąd i zostanie rozwiązany w kolejnej wersji (0.11.1):
https://github.com/pydata/pandas/issues/3489
UPDATE: Nadal nie została nowa wersja pandy, ale istnieje obejście opisane tutaj, który nie wymaga korzystania inna wersja pandy:
github.com/pydata/pandas/issues/3454
Więc zmianie ostatniego wiersza w bloku kodu powyżej do następujących będzie działać poprawnie:
df.to_csv("dfTest.txt","\t",header=True,cols=["b","a","c"], engine='python')
UPDATE wydaje się, że argument "cols" został przemianowany na "columns", a argument "engine" jest przestarzały (nie jest już dostępny) w najnowszych wersjach pandy. Ten błąd został naprawiony w wersji 0.19.0.
Próbowanie tego rozwiązania z najnowszymi pandami (0.19.2) daje: 'TypeError: to_csv() dostał nieoczekiwany argument słowa kluczowego 'cols'' czy API się zmienił? – arielf
Uważa się, że ta opcja została uznana za przestarzałą, ponieważ nie jest już potrzebna. – CnrL
Wygląda na to, że nazwa została zmieniona na 'columns'. Zmiana 'cols' na' kolumny' działa teraz dla mnie. – arielf
Kolejność kolumn powinna być ogólnie zachowana podczas czytania, a następnie zapisywania pliku CSV, ale jeśli z jakiegoś powodu nie są one w żądanej kolejności, można użyć argumentu ze słowem kluczowym columns
w to_csv
.
Na przykład, jeśli masz CSV z kolumn A, B, C, D:
data = pd.read_csv(filename)
data.to_csv(filename, columns=['a', 'b', 'c', 'd'])
Innym rozwiązaniem jest to zrobić:
import pandas as pd
data = pd.read_csv(filename)
data2 = df[['A','B','C']] #put 'A' 'B' 'C' in the desired order
data2.to_csv(filename)
To było jedyne rozwiązanie, które działało dla mnie. Możesz zmniejszyć linię kodu, zmieniając kolejność i tworząc plik CSV w jednym kroku. – Mtap1
- 1. pandy: łączenie dwóch kolumn w DataFrame
- 2. przekształcić wierszy do kolumn w Pandy dataframe
- 3. Zachowanie kolejności kolumn w metodzie pandy to_csv
- 4. Suma kilku kolumn z dataframe pandy
- 5. Pandy: Dodaj wiele pustych kolumn do DataFrame
- 6. Wypełnianie pandy DataFrame Frome inny DataFrame na podstawie nazw kolumn
- 7. Brak nazw kolumn w pythonie pandy
- 8. indeksowaniu DataFrame pandy
- 9. Pandy wartości kolumn do kolumn?
- 10. Dzielenie listy wewnątrz pandy DataFrame
- 11. Pandy: Wybierz wartości z określonych kolumn w DataFrame według wiersza
- 12. wyborze wierszy na podstawie wielu wartości kolumn w Pandy dataframe
- 13. Dataframe Merge in Pandy
- 14. Pandy, DataFrame: Dzielenie jednej kolumny na wiele kolumn
- 15. python pandy dataframe utworzyć nową kolumnę z innych kolumn komórek
- 16. jak zresetować wskaźnik pandy dataframe po dropna() Pandy dataframe
- 17. Pandy: transformuj wartości kolumn w niezależnych kolumnach
- 18. użyciu len() w Pandy dataframe
- 19. pandy: normalizowanie DataFrame
- 20. mediana pandy dataframe
- 21. pandy DataFrame problem
- 22. Get liczbę wartości w kolumnach-pandy DataFrame
- 23. Jak obracać pandy dataframe
- 24. Zrozumienie pandy dataframe indeksowanie
- 25. Zachowanie kolejności kolumn - Pandy Pythona i konkluzji kolumnowej
- 26. Pandy hierarchiczna dataframe
- 27. pandy krojenie multiindex dataframe
- 28. Concating pandy dataframe
- 29. Pandy: Tworzenie zbiorczy kolumnę w DataFrame
- 30. pandy: Wyciąganie konkretne wybrane kolumny z DataFrame do nowego DataFrame
Czy możesz podać przykład swojego csv? – waitingkuo