판다의 열 순서를 _csv 방법으로 보존
팬더의 to_csv 방법은 열 순서를 보존하지 않습니다.CSV에서 열을 알파벳 순으로 정렬하도록 선택합니다.이는 버그이며 0.11.0 버전에서 보고되었으며 수정될 예정입니다.0.18.0입니다.
import pandas as pd
df = pd.DataFrame({'V_pod_error' : [a],
'V_pod_used' : [b],
'U_sol_type' : [c]
...
... and so on upto 50 columns }
pd.to_csv(df)
Excel 주문:
0 U_sol type V_pod_error V_pod_used ...
1
제가 원하는 것은 사전의 순서입니다.
0 V_pod_error V_pod_used U_sol type ...
1
저는 엄청난 수의 칼럼과 이름을 가지고 있습니다.저는 그것을 수동으로 할 수도 없고 열 순서를 쓸 수도 없습니다.2013년에도 똑같은 질문이 있었습니다.그리고 업데이트가 있는 것 같지 않습니다!저는 지역사회에 도움을 요청하고 싶습니다!이것은 정말 문제가 많습니다.
다음 솔루션을 사용해 보십시오.저도 같은 문제에 직면했습니다.저는 다음과 같이 해결했습니다.
import pandas as pd
df = pd.DataFrame({'V_pod_error' : [a],
'V_pod_used' : [b],
'U_sol_type' : [c]
...
... and so on upto 50 columns }
column_order = ['V_pod_error', 'V_pod_used', 'U_sol_type',.....# upto 50 column names]
df[column_order].to_csv(file_name)
문제가 있다고 생각합니다.DataFrame
생성자, 매개 변수 추가가 필요하기 때문입니다.columns
열을 사용자 지정 순서로 정렬할 수 있습니다.매개 변수 열을 설정하지 않으면 열이 영숫자 순서로 정렬됩니다.
import pandas as pd
df = pd.DataFrame({'V_pod_error' : [0,2],
'V_pod_used' : [6,4],
'U_sol_type' : [7,8]})
print df
U_sol_type V_pod_error V_pod_used
0 7 0 6
1 8 2 4
print df.to_csv()
,U_sol_type,V_pod_error,V_pod_used
0,7,0,6
1,8,2,4
df1 = pd.DataFrame({'V_pod_error' : [0,2],
'V_pod_used' : [6,4],
'U_sol_type' : [7,8]},
columns=['V_pod_error','V_pod_used','U_sol_type'])
print df1
V_pod_error V_pod_used U_sol_type
0 0 6 7
1 2 4 8
print df1.to_csv()
,V_pod_error,V_pod_used,U_sol_type
0,0,6,7
1,2,4,8
편집:
또 다른 솔루션은 쓰기 전에 부분 집합별로 열 순서를 설정하는 것입니다(Mathias711 감사합니다).
import pandas as pd
df = pd.DataFrame({'V_pod_error' : [0,2],
'V_pod_used' : [6,4],
'U_sol_type' : [7,8]})
print df
U_sol_type V_pod_error V_pod_used
0 7 0 6
1 8 2 4
df = df[['V_pod_error','V_pod_used','U_sol_type']]
print df
V_pod_error V_pod_used U_sol_type
0 0 6 7
1 2 4 8
EDIT1: 먼저 변환하는 데 도움이 될 수 있습니다.dict
로.OrderedDict
생성합니다.DataFrame
:
import collections
import pandas as pd
d = {'V_pod_error' : [0,2],'V_pod_used' : [6,4], 'U_sol_type' : [7,8]}
print d
{'V_pod_error': [0, 2], 'V_pod_used': [6, 4], 'U_sol_type': [7, 8]}
print pd.DataFrame(d)
U_sol_type V_pod_error V_pod_used
0 7 0 6
1 8 2 4
d1 = collections.OrderedDict(d)
print d1
OrderedDict([('V_pod_error', [0, 2]), ('V_pod_used', [6, 4]), ('U_sol_type', [7, 8])])
print pd.DataFrame(d1)
V_pod_error V_pod_used U_sol_type
0 0 6 7
1 2 4 8
사용:
df.to_csv(file_name, sep=',', encoding='utf-8', header=True, columns=["Col1","Col2","Col3","Col4"])
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html
언급URL : https://stackoverflow.com/questions/37070759/preserving-column-order-in-the-pandas-to-csv-method
'programing' 카테고리의 다른 글
Firebase에서 사용자 지정 하위 도메인을 만들려면 어떻게 해야 합니까? (0) | 2023.06.18 |
---|---|
Wordpress Woocommerce 사용자 지정 배송 필드(AJAX)에서 값 가져오기 (0) | 2023.06.13 |
LINQ에서 SQL로 절 지정(선택 사항) 기준 (0) | 2023.06.13 |
내일 날짜를 알 수 있는 가장 깨끗하고 가장 파이썬적인 방법? (0) | 2023.06.13 |
mariadb 온라인 삭제 인덱스가 작동하지 않음 (0) | 2023.06.13 |