pandas dataframe 3일치의 Data를 하나의 Row로 합치는 것을 하고 싶습니다.

조회수 66회

안녕하세요. pandas dataframe data전처리를 하고 있는데 막힌 부분이 있어 문의 드립니다.

제가 먼저 하고 싶은 것은 이미지에 나와 있는 것 처럼, Oper별로 해서 3일치의 Data를 하나의 Row로 합치는 것을 하고 싶습니다. 예를 들면, Oper1의 9월 1일 data가 끝이 나면 9월 2일 data가 바로 따라 붙게 하고, 그리고 나서 9월 3일의 data가 붙는 것입니다.

그 이후에는 Oper2의 data가 2번째의 Row에 들어가면서 똑같은 형태의 dataframe을 만들고 싶은데, 생각보다 잘 안만들어져서 문의 드립니다. 제가 만들고 싶은 형태는 10 x 78형태의 Dataset인데, index를 어떻게 처리해야할지 몰라 1 x 780이 되어버렸네요. 고수님들 도와주시면 감사하겠습니다.

df = pd.DataFrame()
for i in range(0,10):
    for j in range(0,3):
        result = data1[j:j+1]
        result = result.reset_index(drop=True)
        df = pd.concat([df,result], ignore_index = True,axis=1)

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    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
    
    >>> df = pd.DataFrame({"a":[1,2,3,4,5,6], "b":list("abcdef")})
    >>> df
       a  b
    0  1  a
    1  2  b
    2  3  c
    3  4  d
    4  5  e
    5  6  f
    >>> df[0::3]
       a  b
    0  1  a
    3  4  d
    >>> df[1::3]
       a  b
    1  2  b
    4  5  e
    >>> df[2::3]
       a  b
    2  3  c
    5  6  f
    >>> pd.concat([df[0::3], df[1::3], df[2::3]], axis=1)
         a    b    a    b    a    b
    0  1.0    a  NaN  NaN  NaN  NaN
    1  NaN  NaN  2.0    b  NaN  NaN
    2  NaN  NaN  NaN  NaN  3.0    c
    3  4.0    d  NaN  NaN  NaN  NaN
    4  NaN  NaN  5.0    e  NaN  NaN
    5  NaN  NaN  NaN  NaN  6.0    f
    >>> df[0::3].reset_index(drop=True)
       a  b
    0  1  a
    1  4  d
    >>> df[1::3].reset_index(drop=True)
       a  b
    0  2  b
    1  5  e
    >>> df[2::3].reset_index(drop=True)
       a  b
    0  3  c
    1  6  f
    >>> pd.concat([df[0::3].reset_index(drop=True), df[1::3].reset_index(drop=True), df[2::3].reset_index(drop=True)], axis=1)
       a  b  a  b  a  b
    0  1  a  2  b  3  c
    1  4  d  5  e  6  f
    >>> 
    
    • 와..이런거였군여..뭔가 꿈에도 생각못할 코드였네요;; 서삼수 2021.9.10 08:18

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.