2016-04-11 10 views
7

मैं निम्नलिखित DataFrame पर to_dict समारोह कॉल करने के लिए कोशिश कर रहा हूँ कर रहा हूँ:पांडा to_dict के साथ बदलता सूचकांक प्रकार outtype = 'रिकॉर्ड'

पीडी के रूप में

डेटा = { "एक"

आयात पांडा: [1 , 2,3,4,5], "ख": [90,80,40,60,30]}

DF = pd.DataFrame (डेटा)

a b 
0 1 90 
1 2 80 
2 3 40 
3 4 60 
4 5 30 

df.reset_index() .to_dict ("आर")

[{'a': 1, 'b': 90, 'index': 0}, 
{'a': 2, 'b': 80, 'index': 1}, 
{'a': 3, 'b': 40, 'index': 2}, 
{'a': 4, 'b': 60, 'index': 3}, 
{'a': 5, 'b': 30, 'index': 4}] 

हालांकि मेरी समस्या तब होती है अगर मैं dataframe है, जो एक नाव में सूचकांक mutates पर एक नाव कार्रवाई करने:।

(df * 1.0) .reset_index() to_dict (" r ")

[{'a': 1.0, 'b': 90.0, 'index': 0.0}, 
{'a': 2.0, 'b': 80.0, 'index': 1.0}, 
{'a': 3.0, 'b': 40.0, 'index': 2.0}, 
{'a': 4.0, 'b': 60.0, 'index': 3.0}, 
{'a': 5.0, 'b': 30.0, 'index': 4.0}] 

किसी को भी इसके बाद के संस्करण के व्यवहार की व्याख्या या एक समाधान सलाह देते हैं, या सत्यापित किया जाए या नहीं यह एक पांडा बग हो सकता है कर सकते हैं? To_dict विधि में अन्य कोई भी प्रकार उपरोक्त दिखाए गए इंडेक्स को म्यूटेट नहीं करता है।

मैं दोनों पांडा 0.14 और 0.18 (नवीनतम)

बहुत धन्यवाद पर इस दोहराया गया है!

+2

यह एक बग आप एक दर्ज करनी चाहिए की तरह दिखता है रिपोर्ट [यहां] (https://github.com/pydata/pandas/issues) – EdChum

उत्तर

0

यह सवाल GitHub here

पर जवाब दिया गया है मैं इस सवाल का जवाब यहाँ यह संदेश देगी तो सवाल के रूप में हल चिह्नित किया जा सकता है और उत्तर पांडा सवालों के शीर्ष-सूची से ले जाया गया।

Github से: सूचकांक के साथ क्या करना

कुछ भी नहीं है, बस सच है कि आप डेटा

में किसी भी नाव dtypes है कि आप code को देखें, तो हम DataFrame.values, का उपयोग जो एक NumPy सरणी देता है, जिसमें एक ही dtype (इस मामले में float64) होना चाहिए।

- TomAugspurger

समस्या का संभावित हल होगा:

[x._asdict() for x in df.itertuples()] 

कौन सा OrderedDict की एक सूची उत्पन्न वस्तुओं

[OrderedDict([('Index', 0), ('a', 1.0), ('b', 90)]), 
OrderedDict([('Index', 1), ('a', 2.0), ('b', 80)]), 
OrderedDict([('Index', 2), ('a', 3.0), ('b', 40)]), 
OrderedDict([('Index', 3), ('a', 4.0), ('b', 60)]), 
OrderedDict([('Index', 4), ('a', 5.0), ('b', 30)])] 
संबंधित मुद्दे