2-column txt 파일을 합산하는 명령어 질문이 있습니다.
조회수 680회
안녕하세요 프로그래밍 언어에 대해 잘 몰라서 여기에 알맞는 질문인지는 모르겠지만 물어볼데가 없어서 올려봅니다.
위 그림처럼 왼쪽 세 파일에서 DOS 열은 PDOS x,y,z를 합한 값들인데요. 이렇게 생긴 여러 파일에서 DOS열의 값만을 다시 더하고 E(eV) 열은 그대로 가져와서 제일 오른쪽과 같은 파일을 만드는 코드를 만들고 싶은데요. 윈도우에서 이럴 때 사용할 수 있는 명령어들이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
파이썬 판다스로 이렇게 해 볼 수 있습니다.
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> import pandas as pd >>> s1 = """E DOS PDOC_x 1 5 1 2 2 1 3 3 1 4 3 2""" >>> from io import StringIO >>> s2 = """E DOS PDOC_x 1 6 2 2 4 1 3 1 0 4 1 1""" >>> s3 = """E DOS PDOC_x 1 3 2 2 3 1 3 4 3 4 4 1""" >>> df1 = pd.read_csv(StringIO(s1), delim_whitespace=True) >>> df1 E DOS PDOC_x 0 1 5 1 1 2 2 1 2 3 3 1 3 4 3 2 >>> df1.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 4 entries, 0 to 3 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 E 4 non-null int64 1 DOS 4 non-null int64 2 PDOC_x 4 non-null int64 dtypes: int64(3) memory usage: 224.0 bytes >>> df2 = pd.read_csv(StringIO(s2), delim_whitespace=True) >>> df3 = pd.read_csv(StringIO(s3), delim_whitespace=True) >>> df2 E DOS PDOC_x 0 1 6 2 1 2 4 1 2 3 1 0 3 4 1 1 >>> df3 E DOS PDOC_x 0 1 3 2 1 2 3 1 2 3 4 3 3 4 4 1 >>> df1["DOS"] + df2["DOS"] + df3["DOS"] 0 14 1 9 2 8 3 8 Name: DOS, dtype: int64 >>> df1 = df1.set_index("E") >>> df2 = df2.set_index("E") >>> df3 = df3.set_index("E") >>> df1["DOS"] + df2["DOS"] + df3["DOS"] E 1 14 2 9 3 8 4 8 Name: DOS, dtype: int64 >>> df4 = pd.DataFrame() >>> df4["DOC"] = df1["DOS"] + df2["DOS"] + df3["DOS"] >>> df4 DOC E 1 14 2 9 3 8 4 8 >>> df4.reset_index() E DOC 0 1 14 1 2 9 2 3 8 3 4 8 >>>
댓글 입력