Python 辞書があります:
{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}
日付とそれに対応する値を 2 つの別々の列として持つことで、これを pandas データフレームに変換したいと思います。予想される結果は次のようになります。
Date DateValue
0 2012-07-01 391
1 2012-07-02 392
2 2012-07-03 392
. 2012-07-04 392
. ... ...
これを直接行う方法はありますか?
ベストアンサー1
ここでのエラーは、スカラー値を使用して DataFrame コンストラクターを呼び出すためです (値はリスト/辞書/... であることが想定されています。つまり、複数の列があります)。
pd.DataFrame(d)
ValueError: If using all scalar values, you must must pass an index
辞書から項目(つまり、キーと値のペア)を取得できます。
In [11]: pd.DataFrame(d.items()) # or list(d.items()) in python 3
Out[11]:
0 1
0 2012-07-01 391
1 2012-07-02 392
2 2012-07-03 392
3 2012-07-04 392
4 2012-07-05 392
5 2012-07-06 392
In [12]: pd.DataFrame(d.items(), columns=['Date', 'DateValue'])
Out[12]:
Date DateValue
0 2012-07-01 391
1 2012-07-02 392
2 2012-07-03 392
3 2012-07-04 392
4 2012-07-05 392
5 2012-07-06 392
しかし、Series コンストラクターを渡す方が理にかなっていると思います。
In [20]: s = pd.Series(d, name='DateValue')
In [21]: s
Out[21]:
2012-07-01 391
2012-07-02 392
2012-07-03 392
2012-07-04 392
2012-07-05 392
2012-07-06 392
Name: DateValue, dtype: int64
In [22]: s.index.name = 'Date'
In [23]: s.reset_index()
Out[23]:
Date DateValue
0 2012-07-01 391
1 2012-07-02 392
2 2012-07-03 392
3 2012-07-04 392
4 2012-07-05 392
5 2012-07-06 392