이와 비슷한 데이터가 있습니다.
data = [
dict(name = 'test1', index = '1' , status='fail'),
dict(name = 'test3', index = '3', status='pass'),
dict(name = 'test1', index = '11', status='pass'),
dict(name = 'test1', index = '1 2 14 56', status='fail'),
dict(name = 'test3', index = '20', status='fail'),
dict(name = 'test1', index = '2' , status='fail'),
dict(name = 'test3', index = '5:1:50', status='pass'),]
'index'열의 유형은 str입니다. 불규칙한 항목이 있기 때문에 쉽게 숫자 유형으로 변환 할 수 없습니다. (이게 가능하다면이 질문이 없을 것입니다.)
먼저 DataFrame으로 변환합니다.
df = pd.DataFrame(data)
이것은 나에게 준다
name index status
0 test1 1 fail
1 test3 3 pass
2 test1 11 pass
3 test1 1 2 14 56 fail
4 test3 20 fail
5 test1 2 fail
6 test3 5:1:50 pass
다음으로 정렬합니다.
df1 = df.sort_values(by=['name','index'])
'index'열은 'str'이므로 어휘 순으로 정렬됩니다.
name index status
0 test1 1 fail
3 test1 1 2 14 56 fail
2 test1 11 pass
5 test1 2 fail
4 test3 20 fail
1 test3 3 pass
6 test3 5:1:50 pass
내가 실제로 원하는 것은 다음과 같습니다.
name index status
0 test1 1 fail
5 test1 2 fail
2 test1 11 pass
3 test1 1 2 14 56 fail
1 test3 3 pass
4 test3 20 fail
6 test3 5:1:50 pass
행 번호 4 및 7 (DF 인덱스 3 및 6)의 불규칙한 값도 각 테스트 그룹의 시작 부분으로 이동할 수 있습니다. 요점은 숫자 표현으로 변환 할 수있는 '인덱스'열의 값을 숫자로 정렬해야한다는 것입니다. 그리고 바람직하게는 제자리에. 어떻게?
- 답변 # 1
- 답변 # 2
한 가지 가능성은 인덱스의 길이를 제공하는 열을 만드는 것입니다.
df['sort'] = df['index'].str.len() df1 = df.sort_values(by=['name','sort'])
관련 자료
- python - pandas dataframe - 문자열 열에서 고유 한 단어를 찾고 조건에 따라 다른 열의 발생 및 합계 값을 계산합니다
- python - Pandas 데이터 프레임의 셀 내부 문자열에서 사전 만들기
- python 3.x - Pandas 데이터 프레임에서 숫자와 문자열 만 추출
- python - 거기에 구분 기호가 없을 때 pandas 열의 단일 문자열을 여러 열로 분할하는 방법이 있습니까?
- python - Pandas DataFrame) 하나의 열이 다른 df를 대체합니다
- python - 한 Pandas 데이터 프레임 열의 요소를 다른 값으로 분할하려면 어떻게해야합니까?
- python - Pandas 데이터 프레임의 n 번째 열마다 삭제
- python - 팬더 열에서 동적으로 문자열 만들기
- python - 문자열 열 팬더에서 계산을 수행하는 방법
- python - Pandas 데이터 프레임의 기간 datetime 열에서 평균으로 간격을 채울 수 있습니까?
- python - 팬더 데이터 프레임은 전체 열을 동일한 크기의 개체로 바꿉니다
- python - Pandas Dataframe이 열 값을 업데이트하지 않음
- python 3.x - Pandas 데이터 프레임에 계산 된 열을 추가하려면 어떻게해야합니까?
- python 3.x - 데이터 프레임에 문자열 값이있는 열을 할당하는 방법
- python - pandas 데이터 프레임은 조회 값을 기반으로 열을 추가합니다
- python - Pandas DataFrame은 행을 열 값으로 결합합니다 여기서 행은 NaN을 가질 수 있습니다
- python 3.x - Pandas 데이터 프레임의 열의 모든 행에서 문자열의 대문자 단어를 추출하는 방법은 무엇입니까?
- python - pandas 트윗의 문자열 열에서 단어 목록으로 하위 문자열 찾기
- python - Pandas 및 yfinance를 사용하여 다중 레벨 데이터 프레임에 열을 추가하는 방법은 무엇입니까?
- python - Pandas에서 데이터 프레임 열 dtype 변경
이름과 임시 열 (
__ix
) 각각에서 발견 된 첫 번째 정수 (연속 자릿수)입니다.'index'
끈:데이터에서 (쉽게 재현 가능한 예를 제공 해주셔서 감사합니다) 먼저 어떤 것이
__ix
열은 다음과 같습니다.정렬 후 df는 다음과 같습니다.