판다 데이터 프레임의 마지막 데이터 행을 삭제하는 방법
이것은 간단해야 한다고 생각하지만, 몇 가지 아이디어를 시도해 보았지만 아무 것도 효과가 없었습니다.
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
저는 마이너스 지수를 사용하려고 했지만 그것은 또한 오류로 이어지기도 합니다.제가 아직도 뭔가 기본적인 것을 오해하고 있는 것 같습니다.
마지막 n개 행을 삭제하는 방법
df.drop(df.tail(n).index,inplace=True) # drop last n rows
같은 맥락에서 첫 번째 n개 행을 삭제할 수 있습니다.
df.drop(df.head(n).index,inplace=True) # drop first n rows
DF[:-n]
여기서 n은 마지막으로 삭제할 행 수입니다.
마지막 행을 삭제하는 방법
DF = DF[:-1]
Python에서 인덱스 포지셔닝은 0 기반이기 때문에 실제로 요소는 없습니다.index
에 해당하는 위치에len(DF)
당신은 그것이 필요합니다.last_row = len(DF) - 1
:
In [49]: dfrm
Out[49]:
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
9 0.834706 0.002989 0.333436
[10 rows x 3 columns]
In [50]: dfrm.drop(dfrm.index[len(dfrm)-1])
Out[50]:
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
[9 rows x 3 columns]
하지만, 그냥 쓰는 것이 훨씬 더 간단합니다.DF[:-1]
.
놀랍게도 아무도 이 이야기를 꺼내지 않았습니다.
# To remove last n rows
df.head(-n)
# To remove first n rows
df.tail(-n)
1000 행의 데이터 프레임에서 속도 테스트를 실행하면 슬라이싱과head
/tail
사용할 때보다 최대 6배 더 빠름drop
:
>>> %timeit df[:-1]
125 µs ± 132 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> %timeit df.head(-1)
129 µs ± 1.18 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> %timeit df.drop(df.tail(1).index)
751 µs ± 20.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
인덱스만 사용
df.iloc[:-1,:]
그래서 Iloc가 존재합니다.머리나 꼬리를 사용할 수도 있습니다.
완전한 복사를 할 수 없는 가장 좋은 솔루션은
df.drop(df.index[-1], inplace=True)
물론, 당신은 간단히 생략할 수 있습니다.inplace=True
새 데이터 프레임을 만들고 마지막 데이터 프레임을 쉽게 삭제할 수도 있습니다.N
의 조각을 가져옴으로써 행들df.index
(df.index[-N:]
마지막 N개 행을 삭제합니다.그래서 이 접근법은 간결할 뿐만 아니라 매우 유연합니다.
stats = pd.read_csv("C:\\py\\programs\\second pandas\\ex.csv")
통계 출력:
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
9 0.834706 0.002989 0.333436
그냥 쓰기skipfooter=1
skipfooter : int, 기본값 0
건너뛸 파일 맨 아래의 줄 수
stats_2 = pd.read_csv("C:\\py\\programs\\second pandas\\ex.csv", skipfooter=1, engine='python')
stats_2의 출력
A B C
0 0.120064 0.785538 0.465853
1 0.431655 0.436866 0.640136
2 0.445904 0.311565 0.934073
3 0.981609 0.695210 0.911697
4 0.008632 0.629269 0.226454
5 0.577577 0.467475 0.510031
6 0.580909 0.232846 0.271254
7 0.696596 0.362825 0.556433
8 0.738912 0.932779 0.029723
있잖아요, 당신은 그냥 첫 번째 줄에서 -1을 주면 돼요, 이렇게.
last_row = len(DF) - 1
DF = DF.drop(DF.index[last_row])
drop은 새 배열을 반환하여 og 게시물에서 질식된 이유입니다. 일부 열 헤더의 이름을 바꾸고 Dataframe으로 변환된 잘못된 CSV 파일로 인해 일부 행을 삭제해야 하는 유사한 요구 사항이 있었기 때문에 이 게시물을 읽은 후 다음을 사용했습니다.
newList = pd.DataFrame(newList)
newList.columns = ['Area', 'Price']
print(newList)
# newList = newList.drop(0)
# newList = newList.drop(len(newList))
newList = newList[1:-1]
print(newList)
위의 두 개의 코멘트 아웃 라인에서 볼 수 있듯이, 그것은 잘 작동했습니다. () 방법과 그것은 작동하지만 [n:-n]을 사용하는 것만큼 쿨하고 읽기 쉬운 것은 아닙니다. 누군가에게 도움이 되기를 바랍니다. 감사합니다.
다중 인덱스(예: "Stock" 및 "Date")가 있고 마지막 Stock의 마지막 행뿐만 아니라 각 Stock에 대한 마지막 행을 제거하려는 더 복잡한 데이터 프레임의 경우 솔루션은 다음과 같습니다.
# To remove last n rows
df = df.groupby(level='Stock').apply(lambda x: x.head(-1)).reset_index(0, drop=True)
# To remove first n rows
df = df.groupby(level='Stock').apply(lambda x: x.tail(-1)).reset_index(0, drop=True)
처럼groupby()
Multi-Index에 레벨을 추가하는 중입니다. 마지막에 삭제합니다.reset_index()
결과 df는 작업 전과 동일한 유형의 다중 인덱스를 유지합니다.
DF.drop((라벨=Delay, 축=0, 인덱스=last_row)
다음의 함수로서:
DataFrame.drop(라벨=False, 축=0, 인덱스=Enclip, 열=Enclip, 수준=Enclip, inplace=False, errors='drop')
행 또는 열에서 지정된 레이블을 삭제합니다.
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop.html
언급URL : https://stackoverflow.com/questions/26921651/how-to-delete-the-last-row-of-data-of-a-pandas-dataframe
'programing' 카테고리의 다른 글
Access-Control-Allow-Origin: *을(를) 사용하여 도메인 간 Ajax 호출을 허용하는 브라우저는 무엇입니까? (0) | 2023.08.27 |
---|---|
jQuery를 사용하여 텍스트 문자열을 찾으시겠습니까? (0) | 2023.08.27 |
루프에 대한 단일 선 중첩 (0) | 2023.08.22 |
Ajax 호출을 사용하여 양식 모음을 작업으로 전달하는 방법은 무엇입니까? (0) | 2023.08.22 |
jQuery.val 변경 시 입력 값이 변경되지 않습니다. (0) | 2023.08.22 |