>

파일 이름이 날짜 인 날짜 스탬프 파일이 많이 있습니다. 각 파일에는 동일한 구조의 레코드 세트가 있으며, 이는 dataframe 에 있습니다. .

이것들을 하나의 dataframe 로 만들고 싶습니다 파일 이름을 열로 사용합니다.

샘플 코드는 다음과 같습니다.

import pandas as pd
import numpy as np
df1 = pd.DataFrame({
    'a': np.random.rand(6),
    'b': np.random.choice([4,9,np.nan], 6),
})
df2 = df1*3
df3 = np.sqrt(df2)
df4 = df1*df3
df5 = df2*0.5
df6 = df2*df2
df = pd.DataFrame({
    'fname': pd.date_range('1/1/2018', periods=6, freq='D'),
    'df': [df1, df2, df3, df4, df5, df6]
})

예상 df 출력은 다음과 같습니다 :

   a           b   fname
0   0.634776    NaN 2018-01-01
1   0.616349    NaN 2018-01-02
2   0.502559    NaN 2018-01-03
3   0.545378    4.0 2018-01-04
4   0.658668    4.0 2018-01-05
5   0.822417    9.0 2018-01-06
0   1.904328    NaN 2018-01-01
1   1.849046    NaN 2018-01-02
2   1.507678    NaN 2018-01-03
3   1.636133    2.0 2018-01-04
4   1.976004    2.0 2018-01-05
5   2.467252    3.0 2018-01-06
...and so on...


  • 답변 # 1

    dict 를 만드는 것이 더 좋다고 생각합니다 이므로 concat 를 사용할 수 있습니다 :

    d = dict(zip(pd.date_range('1/1/2018', periods=6, freq='D'),
                  [df1, df2, df3, df4, df5, df6]))
    df = (pd.concat(d)
           .reset_index(level=1, drop=True)
           .rename_axis('fname')
           .reset_index()
           )
    
    

    또는 concat 에 DataFrames 전달 목록  매개 변수 keys :

    df = (pd.concat([df1, df2, df3, df4, df5, df6], 
                   keys=pd.date_range('1/1/2018', periods=6, freq='D'))
           .reset_index(level=1, drop=True)
           .rename_axis('fname')
           .reset_index()
           )
    print (df.head(10))
           fname         a     b
    0 2018-01-01  0.075056   9.0
    1 2018-01-01  0.646019   9.0
    2 2018-01-01  0.656301   NaN
    3 2018-01-01  0.420031   4.0
    4 2018-01-01  0.239017   9.0
    5 2018-01-01  0.921222   NaN
    6 2018-01-02  0.225168  27.0
    7 2018-01-02  1.938057  27.0
    8 2018-01-02  1.968903   NaN
    9 2018-01-02  1.260093  12.0
    
    

  • 답변 # 2

    데이터 프레임을 모으려면 pd.Concat 를 사용해야한다고 생각합니다 : https : //pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html

    데이터를 읽을 때 어떤 코드를 사용합니까? 이것이 이와 같은 경우

    file_name = os.listdir(path)
    file_name = [file_name for file_name in glob.glob('* *')]
    df = pd.DataFrame()
    dfs = []
    for file_name in file_name:
    data = pd.read_csv(file_name, 'Sheet1')
    
    data['DateTime'] = pd.to_datetime(file_name[:10])
    dfs.append(data)
    df = pd.concat(dfs, ignore_index=True)
    
    

    file_name [: 10]은 문자 수를 기준으로 파일에서 날짜를 가져옵니다

관련 자료

  • 이전 javascript - NodeJS는 child_processspawn에서 명령을 실행하기 위해 폴더로 이동할 수 없습니다
  • 다음 스프링 메일 인증 실패자