[英]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.