मेरे पास डेटाफ्रेम है, इंडेक्स के साथ अस्थिरता सतह के रूप में समय और कॉलम स्ट्राइक के रूप में कहें। मैं दो आयामी इंटरपोलेशन कैसे करूं? मैं reindex
कर सकता हूं लेकिन मैं NaN
से कैसे निपटूं? मुझे पता है कि हम fillna(method='pad')
कर सकते हैं लेकिन यह रैखिक इंटरपोलेशन भी नहीं है। क्या कोई तरीका है कि हम इंटरपोलेशन करने के लिए अपनी खुद की विधि में प्लग कर सकते हैं?पांडा में डेटाफ्रेम पर इंटरपोलेशन
उत्तर
आप रैखिक इंटरपोलेशन प्राप्त करने के लिए DataFrame.interpolate
का उपयोग कर सकते हैं।
In : df = pandas.DataFrame(numpy.random.randn(5,3), index=['a','c','d','e','g'])
In : df
Out:
0 1 2
a -1.987879 -2.028572 0.024493
c 2.092605 -1.429537 0.204811
d 0.767215 1.077814 0.565666
e -1.027733 1.330702 -0.490780
g -1.632493 0.938456 0.492695
In : df2 = df.reindex(['a','b','c','d','e','f','g'])
In : df2
Out:
0 1 2
a -1.987879 -2.028572 0.024493
b NaN NaN NaN
c 2.092605 -1.429537 0.204811
d 0.767215 1.077814 0.565666
e -1.027733 1.330702 -0.490780
f NaN NaN NaN
g -1.632493 0.938456 0.492695
In : df2.interpolate()
Out:
0 1 2
a -1.987879 -2.028572 0.024493
b 0.052363 -1.729055 0.114652
c 2.092605 -1.429537 0.204811
d 0.767215 1.077814 0.565666
e -1.027733 1.330702 -0.490780
f -1.330113 1.134579 0.000958
g -1.632493 0.938456 0.492695
कुछ भी करने के लिए और अधिक जटिल है, तो आप रोल आउट करने के लिए अपने स्वयं के समारोह है कि एक Series
वस्तु से निपटने और के रूप में आप की तरह NaN
मूल्यों को भरने और एक अन्य Series
वस्तु वापस आ जाएगी की जरूरत है।
पुराना धागा लेकिन सोचा कि मैं अपने समाधान को 2 डी एक्सट्रापोलेशन/इंटरपोलेशन के साथ साझा करूंगा, सूचकांक मूल्यों का सम्मान करता हूं, जो मांग पर भी काम करता है। कोड थोड़ा अजीब हो गया है तो मुझे बेहतर समाधान दें यदि 0 बेहतर समाधान है:
import pandas
from numpy import nan
import numpy
dataGrid = pandas.DataFrame({1: {1: 1, 3: 2},
2: {1: 3, 3: 4}})
def getExtrapolatedInterpolatedValue(x, y):
global dataGrid
if x not in dataGrid.index:
dataGrid.ix[x] = nan
dataGrid = dataGrid.sort()
dataGrid = dataGrid.interpolate(method='index', axis=0).ffill(axis=0).bfill(axis=0)
if y not in dataGrid.columns.values:
dataGrid = dataGrid.reindex(columns=numpy.append(dataGrid.columns.values, y))
dataGrid = dataGrid.sort_index(axis=1)
dataGrid = dataGrid.interpolate(method='index', axis=1).ffill(axis=1).bfill(axis=1)
return dataGrid[y][x]
print getExtrapolatedInterpolatedValue(2, 1.4)
>>2.3
सुंदर समाधान। मेरे लिए बहुत अच्छा काम करता है। प्रविष्टि के लिए धन्यवाद! – HeinzKurt
- 1. पांडा डेटाफ्रेम
- 2. पांडा: डेटाफ्रेम
- 3. पांडा डेटाफ्रेम
- 4. पांडा डेटाफ्रेम
- 5. पांडा डेटाफ्रेम
- 6. पांडा में बड़े, लगातार डेटाफ्रेम
- 7. दो पांडा डेटाफ्रेम जोड़ना
- 8. पांडा डेटाफ्रेम पिवोटिंग समस्या
- 9. पांडा: डेटाफ्रेम का नमूनाकरण
- 10. पांडा डेटाफ्रेम, मूल्य
- 11. पांडा: अद्वितीय डेटाफ्रेम
- 12. स्पैस डेटाफ्रेम से निरंतर पांडा डेटाफ्रेम भरना
- 13. प्लॉट पांडा डेटाफ्रेम जिसमें NaNs
- 14. पांडा: डेटाफ्रेम को सामान्यीकृत करना
- 15. पांडा डेटाफ्रेम का उपयोग कर मेमोरी लीक
- 16. डेटाटाइम ऑब्जेक्ट्स के साथ पांडा रीइन्डेक्स डेटाफ्रेम
- 17. डेटाफ्रेम.प्ली में पाइथन पांडा में मूल और डुप्लिकेट डेटाफ्रेम
- 18. पांडा
- 19. पायथन पांडा में डेटाफ्रेम से विशेष पंक्तियों को हटाने
- 20. पांडा
- 21. आयात करें पांडा डेटाफ्रेम कॉलम स्ट्रिंग के रूप में int
- 22. पंडेस में पित्टेबल्स टेबल डेटाफ्रेम
- 23. पांडा
- 24. पांडा पाइथन
- 25. पांडा
- 26. पांडा में कॉलम पर .str.split() ऑपरेशन के बाद अंतिम "कॉलम" प्राप्त करें डेटाफ्रेम
- 27. स्तंभ लेबल के आधार पर पांडा में डेटाफ्रेम को दोबारा बदलना
- 28. क्यूबिज्म ग्राफ पर इंटरपोलेशन
- 29. तारों पर इंटरपोलेशन खोज
- 30. अनियमित ग्रिड पर इंटरपोलेशन
अवारी, आपके उत्तरों के लिए बहुत बहुत धन्यवाद! – archlight
इसे भरने में एक विकल्प के रूप में शामिल करना एक अच्छा विचार होगा। – DanB
क्या होता है यदि इंटरपोलेशन चरण में स्थिर (अलग) रखने के लिए कोई अन्य आयाम (या श्रेणी) है? यानी, मैं समूह के साथ अपने अद्भुत समाधान को कैसे जोड़ सकता हूं? फिलहाल, अगर इंडेक्स के दोहराए गए मान हैं (उदाहरण के लिए वे अलग-अलग श्रेणियों में समान हैं, जिन्हें मैं समूह करना चाहता हूं), रेइन्डेक्स() चरण विफल रहता है, "दावा करना कि विशिष्ट रूप से मूल्यवान इंडेक्स ऑब्जेक्ट्स के साथ केवल वैध है"। (शायद यह एक नया सवाल होना चाहिए?) – CPBL