pandas 데이터프레임 내용 수정을 위한 for 문 코드 작성
조회수 406회
안녕하세요 판다스 이용해서 데이터프레임 작업중인데 해결이 안되어서 이렇게 질문을 올립니다.
데이터프레임을 불러와서 각 행마다 내용 수정을 해야하는데요 예를들어 1행이면 1행,1열 내용을 / 2행이면 1행1열, 2행2열 내용 / 3행이면 1열1행,2열2행,3열3행내용을 바꿔야합니다. 바꿔야하는 값은 전부 nan 으로 바꾸면 됩니다.
예를들어 이러한 식의 표가 있다면 (일부만 나타냈다고 해볼게요)
df = pd.DataFrame([[0.000, 0.0224, 0.0123, 0.0446],
[0.0224, 0.000, 0.0145, 0.0105],
[0.0123, 0.0145, 0.0000, 0.0255],
[0.0446, 0.0105, 0.0255 ,0.000]],
columns = [a, b, c, d])
코드 작성을 통해
df = pd.DataFrame([[nan , 0.0224, 0.0123, 0.0446],
[nan, nan, 0.0145, 0.0105],
[nan, nan, nan, 0.0255],
[nan, nan, nan, nan]] ,
columns = [a, b, c, d])
이렇게 생긴 새로운 표를 만들어 내고 싶습니다.
도움 부탁드립니다 감사합니다.
2 답변
-
def solution(df): for i in range(10): for j in range(10): if i >= j: df.iloc[i,j] = np.nan return df
참고하셔서 수정해서 사용하시면 될 것 같습니다.
- 감사합니다! 비슷한 방식으로 함수 설정해서 apply 하는 식으로 해보고 있었는데 실행이 안되어서 막막하던 차였습니다 참고해서 해보겠습니다 감사합니다. 이규란 2022.10.28 13:31
- column 명과 index 명이 없는 데이터 프레임에서는 이렇게 해도 될 것 같아요. df.apply(lambda x: x.mask(x.index <= x.name, np.nan), axis=1) Jaewans 2022.10.28 13:48
- 도움 주셔서 감사합니다. column 명은 지정이 되어있는데 컬럼을 그럼 지우고 저렇게 실행을 해보면 더좋을까요? 다른 일이 많아서 지금 다시 해보고 있는데 'too many indices for array: array is 1-dimensional, but 2 were indexed ' 라는 오류가 계속 떠서 해결해보고 있는 중입니다.. 이규란 2022.10.28 15:55
- 선생님 참고해서 수정해서 해결했습니다 감사드립니다 ! 이규란 2022.10.31 11:15
-
댓글 입력