2

データフレームに関数を適用して、結果として1つの辞書を受け取りたいと思います。pandas.applyは一連のdictを提供するので、現在、それぞれのキーを組み合わせる必要があります。説明のために例を使用します。

私はそのようなパンダのデータフレームを持っています。

In [20]: df
Out[20]:
          0  1
0  2.025745  a
1 -1.840914  b
2 -0.428811  c
3  0.718237  d
4  0.079593  e

辞書を返す関数があります。この例lambda x: {x: ord(x)}では、辞書を返すおもちゃのラムダ関数を使用しています。

In [22]: what_i_get = df[1].apply(lambda x: {x: ord(x)})
In [23]: what_i_get
Out[23]:
0     {'a': 97}
1     {'b': 98}
2     {'c': 99}
3    {'d': 100}
4    {'e': 101}
Name: 1

apply()は一連の辞書を提供しますが、必要なのは単一の辞書です。

私は次のようなものでそれを作成することができます:

In [41]: what_i_want = {}
In [42]: for elem in what_i_get:
   ....:    for k,v in elem.iteritems():
   ....:        what_i_want[k] = v
   ....:

In [43]: what_i_want
Out[43]: {'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101}

でも、もっと直接欲しいものが手に入るはずです。

4

2 に答える 2

4

関数からdictを返す代わりに、マップされた値を返すだけで、マッピング操作の外部に1つのdictを作成します。

>>> d
   Stuff
0     a
1     b
2     c
3     d
>>> dict(zip(d.Stuff, d.Stuff.map(ord)))
{'a': 97, 'b': 98, 'c': 99, 'd': 100}
于 2012-11-06T20:42:26.217 に答える
1

items()仲買人を切り取る:

what_i_want = {}
for elem in what_i_get:
    what_i_want.update(elem)
于 2012-11-06T20:41:40.710 に答える