개발관련/other

빈 Pandas DataFrame을 만든 다음 채우는 방법

Rateye 2022. 1. 17. 12:07
728x90
반응형
질문 : 빈 Pandas DataFrame을 만든 다음 채우시겠습니까?

pandas DataFrame 문서에서 시작합니다. http://pandas.pydata.org/pandas-docs/stable/dsintro.html

시계열 종류의 계산에서 값으로 DataFrame을 반복적으로 채우고 싶습니다. 따라서 기본적으로 A, B 열 및 타임 스탬프 행, 모두 0 또는 모두 NaN으로 DataFrame을 초기화하고 싶습니다.

그런 다음 초기 값을 추가하고 이전 행에서 새 행을 계산하는이 데이터를 살펴 row[A][t] = row[A][t-1]+1 정도입니다.

현재 아래와 같은 코드를 사용하고 있지만 다소 추한 것 같고 DataFrame으로 직접 또는 일반적으로 더 나은 방법이 있어야합니다. 참고 : 저는 Python 2.7을 사용하고 있습니다.

import datetime as dt
import pandas as pd
import scipy as s

if __name__ == '__main__':
    base = dt.datetime.today().date()
    dates = [ base - dt.timedelta(days=x) for x in range(0,10) ]
    dates.sort()

    valdict = {}
    symbols = ['A','B', 'C']
    for symb in symbols:
        valdict[symb] = pd.Series( s.zeros( len(dates)), dates )

    for thedate in dates:
        if thedate > dates[0]:
            for symb in valdict:
                valdict[symb][thedate] = 1+valdict[symb][thedate - dt.timedelta(days=1)]

    print valdict
답변

다음은 몇 가지 제안입니다.

인덱스에 date_range 를 사용하십시오.

import datetime
import pandas as pd
import numpy as np

todays_date = datetime.datetime.now().date()
index = pd.date_range(todays_date-datetime.timedelta(10), periods=10, freq='D')

columns = ['A','B', 'C']

참고 : 간단히 다음과 같이 작성하여 빈 DataFrame ( NaN

df_ = pd.DataFrame(index=index, columns=columns)
df_ = df_.fillna(0) # with 0s rather than NaNs

데이터에 대해 이러한 유형의 계산을 수행하려면 numpy 배열을 사용하십시오.

data = np.array([np.arange(10)]*3).T

따라서 DataFrame을 만들 수 있습니다.

In [10]: df = pd.DataFrame(data, index=index, columns=columns)

In [11]: df
Out[11]: 
            A  B  C
2012-11-29  0  0  0
2012-11-30  1  1  1
2012-12-01  2  2  2
2012-12-02  3  3  3
2012-12-03  4  4  4
2012-12-04  5  5  5
2012-12-05  6  6  6
2012-12-06  7  7  7
2012-12-07  8  8  8
2012-12-08  9  9  9

 

출처 : https://stackoverflow.com/questions/13784192/creating-an-empty-pandas-dataframe-then-filling-it
728x90
반응형