簡體   English   中英

通過將函數應用於pandas系列獲得字典

[英]Get a Dictionary by applying function to pandas Series

我想將一個函數應用於數據框並接收一個字典作為結果。 pandas.apply給了我一系列的命令,所以目前我不得不組合每個命令的鍵。 我將用一個例子來說明。

我有一個像這樣的熊貓數據框。

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函數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}

但是看來我應該能夠直接得到我想要的東西。

無需從函數中返回字典,只需返回映射值,然后在映射操作之外創建一個字典:

>>> 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}

切掉items()中間人:

what_i_want = {}
for elem in what_i_get:
    what_i_want.update(elem)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM