반응형
질문
나는 Python 사전을 가지고 있습니다:
{u'2012-06-08': 388,
u'2012-06-09': 388,
u'2012-06-10': 388,
u'2012-06-11': 389,
u'2012-06-12': 389,
u'2012-06-13': 389,
u'2012-06-14': 389,
u'2012-06-15': 389,
u'2012-06-16': 389,
u'2012-06-17': 389,
u'2012-06-18': 390,
u'2012-06-19': 390,
u'2012-06-20': 390,
u'2012-06-21': 390,
u'2012-06-22': 390,
u'2012-06-23': 390,
u'2012-06-24': 390,
u'2012-06-25': 391,
u'2012-06-26': 391,
u'2012-06-27': 391,
u'2012-06-28': 391,
u'2012-06-29': 391,
u'2012-06-30': 391,
u'2012-07-01': 391,
u'2012-07-02': 392,
u'2012-07-03': 392,
u'2012-07-04': 392,
u'2012-07-05': 392,
u'2012-07-06': 392}
키는 문자열 (날짜)이고 값은 정수입니다. 날짜와 해당 값으로 두 개의 별도 열로 이를 pandas 데이터프레임으로 변환하고 싶습니다. 예: col1: Dates col2: DateValue (날짜는 여전히 유니코드이고 날짜값은 여전히 정수입니다)
Date DateValue
0 2012-07-01 391
1 2012-07-02 392
2 2012-07-03 392
. 2012-07-04 392
. ... ...
. ... ...
하나의 해결책은 이 사전의 각 키-값 쌍을 사전으로 변환하여 전체 구조를 사전의 사전으로 만드는 것입니다. 그런 다음 각 행을 개별적으로 데이터프레임에 추가할 수 있습니다. 그러나 이보다 더 직접적인 방법이 있는지 알고 싶습니다.
지금까지 이 사전을 Series 객체로 변환해 보았지만, 이렇게 하면 열 간의 관계가 유지되지 않는 것 같습니다:
s = Series(my_dict,index=my_dict.keys())
답변
여기서의 오류는 DataFrame 생성자를 스칼라 값으로 호출하는 것입니다 (값이 리스트/사전/... 즉, 여러 열을 가지고 있는 것으로 예상됩니다):
pd.DataFrame(d)
ValueError: 모든 스칼라 값 사용 시, 인덱스를 전달해야 합니다
사전에서 항목 (즉, 키-값 쌍)을 가져올 수 있습니다:
In [11]: pd.DataFrame(d.items()) # 또는 list(d.items()) in python 3
Out[11]:
0 1
0 2012-07-02 392
1 2012-07-06 392
2 2012-06-29 391
3 2012-06-28 391
...
In [12]: pd.DataFrame(d.items(), columns=['Date', 'DateValue'])
Out[12]:
Date DateValue
0 2012-07-02 392
1 2012-07-06 392
2 2012-06-29 391
하지만 Series 생성자를 전달하는 것이 더 의미가 있다고 생각합니다:
In [21]: s = pd.Series(d, name='DateValue')
Out[21]:
2012-06-08 388
2012-06-09 388
2012-06-10 388
In [22]: s.index.name = 'Date'
In [23]: s.reset_index()
Out[23]:
Date DateValue
0 2012-06-08 388
1 2012-06-09 388
2 2012-06-10 388
반응형
댓글