क्या आप जानते हैं कि एक DataFrame के सूचकांक या स्तंभ को एक NumPy सरणी या अजगर सूची के रूप में कैसे प्राप्त करें?
क्या आप जानते हैं कि एक DataFrame के सूचकांक या स्तंभ को एक NumPy सरणी या अजगर सूची के रूप में कैसे प्राप्त करें?
जवाबों:
NumPy सरणी प्राप्त करने के लिए, आपको valuesविशेषता का उपयोग करना चाहिए :
In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c']); df
A B
a 1 4
b 2 5
c 3 6
In [2]: df.index.values
Out[2]: array(['a', 'b', 'c'], dtype=object)
यह एक्सेस करता है कि डेटा पहले से कैसे संग्रहीत है, इसलिए रूपांतरण की कोई आवश्यकता नहीं है।
नोट: यह विशेषता कई अन्य पांडा की वस्तुओं के लिए भी उपलब्ध है।
In [3]: df['A'].values
Out[3]: Out[16]: array([1, 2, 3])
सूची के रूप में सूचकांक प्राप्त करने के लिए, कॉल करें tolist:
In [4]: df.index.tolist()
Out[4]: ['a', 'b', 'c']
और इसी तरह, कॉलम के लिए।
.valuesहटाई गई है, .to_numpy()द्वारा सुझाए गए प्रतिस्थापन यदि आप एक NumPy सरणी चाहते हैं। क्या आप इस पर विस्तार कर सकते हैं कि डेटा पहले से कैसे संग्रहीत है, इसलिए रूपांतरण की कोई आवश्यकता नहीं है ?
आप df.indexअनुक्रमणिका ऑब्जेक्ट का उपयोग करने के लिए उपयोग कर सकते हैं और फिर उपयोग करने वाली सूची में मान प्राप्त कर सकते हैं df.index.tolist()। इसी तरह, आप df['col'].tolist()सीरीज के लिए उपयोग कर सकते हैं ।
df.index.values.tolist()
df.index.tolist()एक इंस्टेंस विधि वापस नहीं करता है। यह सूचकांकों की सूची देता है। यह पांडा इंडेक्स पर परिभाषित एक विधि है। मूल्यों को बुलाते समय पहले एक संभावना है, नौकरी को सुन्न करने के लिए सौंपना एक सुधार नहीं है - बस एक विकल्प।
.valuesइन विधियों के पक्ष में !V0.24.0 के बाद से, हम दो ब्रांड अनूठे नए, से NumPy सरणी प्राप्त करने के लिए पसंदीदा तरीकों होगा Index, Seriesऔर DataFrameवस्तुओं: वे कर रहे हैं to_numpy(), और .array। उपयोग के संबंध में, डॉक्स का उल्लेख है:
हम को नहीं निकाला या पदावनत
Series.valuesयाDataFrame.valuesहै, लेकिन हम अनुशंसा करते हैं और का उपयोग कर.arrayया.to_numpy()बजाय।
अधिक जानकारी के लिए v0.24.0 रिलीज़ नोट्स का यह अनुभाग देखें ।
df.index.to_numpy()
# array(['a', 'b'], dtype=object)
df['A'].to_numpy()
# array([1, 4])
डिफ़ॉल्ट रूप से, एक दृश्य लौटाया जाता है। किए गए कोई भी संशोधन मूल को प्रभावित करेगा।
v = df.index.to_numpy()
v[0] = -1
df
A B
-1 1 2
b 4 5
यदि आपको इसके बजाय प्रतिलिपि की आवश्यकता है, तो उपयोग करें to_numpy(copy=True);
v = df.index.to_numpy(copy=True)
v[-1] = -123
df
A B
a 1 2
b 4 5
ध्यान दें कि यह फ़ंक्शन डेटाफ्रेम (जबकि .arrayनहीं) के लिए भी काम करता है।
arrayगुण
यह विशेषता रिटर्न एकExtensionArrayउद्देश्य यह है कि पीठ सूचकांक / श्रृंखला।
pd.__version__
# '0.24.0rc1'
# Setup.
df = pd.DataFrame([[1, 2], [4, 5]], columns=['A', 'B'], index=['a', 'b'])
df
A B
a 1 2
b 4 5
df.index.array
# <PandasArray>
# ['a', 'b']
# Length: 2, dtype: object
df['A'].array
# <PandasArray>
# [1, 4]
# Length: 2, dtype: int64
यहां से, एक सूची का उपयोग करना संभव है list:
list(df.index.array)
# ['a', 'b']
list(df['A'].array)
# [1, 4]
या, सीधे कॉल करें .tolist():
df.index.tolist()
# ['a', 'b']
df['A'].tolist()
# [1, 4]
क्या लौटा है, इस बारे में डॉक्स उल्लेख करते हैं,
के लिए
SeriesऔरIndexसामान्य NumPy सरणी द्वारा समर्थित es,Series.arrayएक नया वापस आ जाएगीarrays.PandasArray, जो एक पतली (कोई-प्रतिलिपि) एक के आसपास आवरण हैnumpy.ndarray।arrays.PandasArrayविशेष रूप से अपने आप में उपयोगी नहीं है, लेकिन यह पंडों में या किसी तीसरे पक्ष के पुस्तकालय द्वारा परिभाषित किसी भी विस्तार सरणी के समान इंटरफ़ेस प्रदान करता है।
इसलिए, संक्षेप में, .arrayया तो वापस आ जाएगा
ExtensionArrayसूचकांक / श्रृंखला, या के मौजूदा समर्थनExtensionArrayतो अंतर्निहित सरणी पर एक पतली आवरण के रूप में एक नई वस्तु बनाई जाती है।दो नए तरीकों को जोड़ने के लिए तर्क
ये कार्य दो GitHub मुद्दों GH19954 और GH23623 के तहत चर्चा के परिणामस्वरूप जोड़े गए थे ।
विशेष रूप से, डॉक्स औचित्य का उल्लेख करते हैं:
[...] इसके साथ
.valuesयह स्पष्ट नहीं था कि लौटाया गया मान वास्तविक सरणी होगा, इसका कोई परिवर्तन होगा, या पांडा कस्टम सरणियों (जैसेCategorical) में से एक होगा। उदाहरण के लिए, के साथPeriodIndex,.valuesएक नया उत्पन्न करता हैndarrayअवधि के लिए हर बार वस्तुओं। [...]
इन दोनों कार्यों का उद्देश्य एपीआई की स्थिरता में सुधार करना है, जो सही दिशा में एक बड़ा कदम है।
अंत में, .valuesवर्तमान संस्करण में पदावनत नहीं किया जाएगा, लेकिन मुझे उम्मीद है कि यह भविष्य में किसी बिंदु पर हो सकता है, इसलिए मैं उपयोगकर्ताओं से आग्रह करूंगा कि जैसे ही आप कर सकते हैं, नए एपीआई की ओर पलायन करें।
पांडा v0.13 के बाद से आप भी उपयोग कर सकते हैं get_values:
df.index.get_values()
get_valuesबस फोन करता है .values। यह टाइप करने के लिए अधिक वर्ण है।
मैंने पांडा dataframeको बदल दिया listऔर फिर मूल का उपयोग किया list.index()। कुछ इस तरह:
dd = list(zone[0]) #Where zone[0] is some specific column of the table
idx = dd.index(filename[i])
आप के रूप में आप सूचकांक मूल्य है idx।
ऐसा करने का एक और हालिया तरीका .to_numpy () फ़ंक्शन का उपयोग करना है।
यदि मेरे पास स्तंभ 'मूल्य' के साथ डेटाफ़्रेम है, तो मैं इसे निम्नानुसार परिवर्तित कर सकता हूं:
priceArray = df['price'].to_numpy()
आप फ़ंक्शन के तर्क के रूप में डेटा प्रकार, जैसे फ्लोट या ऑब्जेक्ट भी पास कर सकते हैं
नीचे डेटाफ्रेम कॉलम को सुपीरियर एरे में बदलने का एक सरल तरीका है।
df = pd.DataFrame(somedict)
ytrain = df['label']
ytrain_numpy = np.array([x for x in ytrain['label']])
ytrain_numpy एक सुव्यवस्थित सरणी है।
मैंने to.numpy()इसके साथ प्रयास किया, लेकिन इसने मुझे नीचे की त्रुटि दी:
TypeError: प्रकारों के लिए कोई समर्थित रूपांतरण नहीं: (dtype ('O'),) रैखिक SVC का उपयोग करते हुए बाइनरी रीलेवेंस क्लासफिकेशन करते हुए। .numpy () डेटाफ्रेम को संख्यात्मक सरणी में परिवर्तित कर रहा था लेकिन आंतरिक तत्व के डेटा प्रकार की सूची थी जिसके कारण उपरोक्त त्रुटि देखी गई थी।
to_numpy।