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
    >>> 
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)