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
반응형
'개발관련 > other' 카테고리의 다른 글
[C++] sizeof (x ++)가 x를 증가시키지 않을 때 (0) | 2022.03.29 |
---|---|
Vim에 텍스트를 붙여 넣을 때 자동 들여 쓰기 끄기 (0) | 2022.03.26 |
'yield return'의 적절한 사용법 (0) | 2022.01.17 |
.NET Framework에서 Math.Pow ()를 구현하는 방법 (0) | 2022.01.17 |
vim "write with sudo"의 작동 원리 (0) | 2022.01.06 |