尋找一種快速的方法,將熊貓數據框中的一行變爲有序的字典,無需使用列表。列表很好,但大型數據集需要很長時間。我正在使用fiona GIS閱讀器,並且行的順序與給出數據類型的模式一致。我使用熊貓來加入數據。在很多情況下,這些行會有不同的類型,所以我想用一個字符串類型轉換成一個numpy數組可能會有訣竅。如何快速將熊貓數據幀行變爲ordereddict
10
A
回答
16
不幸的是,你不能只是做一個應用(因爲它適合回一個數據幀):
In [1]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
In [2]: df
Out[2]:
a b
0 1 2
1 3 4
In [3]: from collections import OrderedDict
In [4]: df.apply(OrderedDict)
Out[4]:
a b
0 1 2
1 3 4
但是你可以用與iterrows列表理解:
In [5]: [OrderedDict(row) for i, row in df.iterrows()]
Out[5]: [OrderedDict([('a', 1), ('b', 2)]), OrderedDict([('a', 3), ('b', 4)])]
如果有可能使用發電機,而不是清單,無論你正在使用什麼,這通常會更高效:
In [6]: (OrderedDict(row) for i, row in df.iterrows())
Out[6]: <generator object <genexpr> at 0x10466da50>
4
這在pandas 0.21.0+
實現在功能上與to_dict
參數into
:
df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
print (df)
a b
0 1 2
1 3 4
d = df.to_dict(into=OrderedDict, orient='index')
print (d)
OrderedDict([(0, OrderedDict([('a', 1), ('b', 2)])), (1, OrderedDict([('a', 3), ('b', 4)]))])
相關問題
- 1. 熊貓據幀行爲
- 2. 熊貓+ CountVectorizer:如何篩選行快速
- 3. 如何將數據幀列轉置爲熊貓中的行
- 4. 將熊貓數據幀轉換爲csv
- 5. 熊貓據幀行數成爲同
- 6. 熊貓CSV:csv到orderedDict
- 7. Python:將OrderedDicts的OrderedDict解析爲熊貓數據框
- 8. 如何添加座標數組作爲熊貓數據幀行
- 9. 將熊貓數據幀列表合併到一個熊貓數據幀中
- 10. 熊貓數據幀:在數據幀
- 11. 熊貓據幀總行
- 12. 迭代熊貓據幀行
- 13. 的Python:熊貓據幀行
- 14. 熊貓數據幀由變量
- 15. 熊貓改變數據幀結構
- 16. 熊貓據幀作爲matplotlib.pyplot.boxplot
- 17. 加快熊貓據幀迭代
- 18. 將熊貓數據幀拆分爲子數據框列表的最快方法
- 19. 如何旋轉大熊貓數據幀
- 20. 如何剪切熊貓數據幀
- 21. 如何在熊貓分組數據幀
- 22. 熊貓:如何在數據幀
- 23. 如何在大熊貓數據幀列
- 24. 如何從大熊貓數據幀
- 25. 如何在大熊貓數據幀
- 26. 如何從列大熊貓數據幀
- 27. 如何在大熊貓數據幀
- 28. 如何從CSV從熊貓數據幀
- 29. 熊貓在迭代數據幀的同時改變數據幀
- 30. 快速從字符串數組轉換爲熊貓數據框