मेरे पास एक पाइपलाइन है जो एक पांडा डेटाफ्रेम लेती है, df
, कई टेक्स्ट कॉलम के साथ, उन्हें दस्तावेज़ में जोड़ता है, और दस्तावेज़ को सदिश बनाता है, जिसके परिणामस्वरूप ए scipy.sparse.csr_matrix
चलो इसे कॉल करें X
.
बाद में मैं पंक्तियों का उपयोग करके निकटतम पड़ोसी प्रश्न करता हूंएक्स (जो मेरे मूल डेटाफ्रेम की पंक्तियों के अनुरूप है), और जब मैं कहना चाहता हूं, एक वैक्टर के टेक्स्ट नाम को प्रदर्शित करें "निकटतम पड़ोसियों, मैं इस तरह एक्स में वेक्टर की पूर्णांक स्थिति का उपयोग करता हूं:
>>> print "Nearest neighbor"s name is", df.iloc[position_in_x,:]["my_name"]
क्या यह एक खराब चाल है, या डेटाफ्रेम में पूर्णांक स्थिति को तब तक स्थिर माना जा सकता है जब तक मैं डेटाफ्रेम से जोड़ या हटा नहीं रहा हूं?
मुझे आश्चर्य है कि दूसरों ने इसे कैसे संभाला है। एक समाधान जो मेरे लिए होता है वह पंक्ति वैक्टर बनाना है X
में एक नया स्तंभ df
.
धन्यवाद!
उत्तर:
जवाब के लिए 0 № 1मैं इस मामले में इलोक के बारे में निश्चित नहीं हूं, लेकिन यदि आप अधिक कठोरता चाहते हैं - तो आप हमेशा उपयोग कर सकते हैं लेबल द्वारा चयन स्थानीय विशेषता के साथ। पंक्तियों के क्रम को बदलने या नई पंक्तियों को जोड़ने के बाद भी आप इसका उपयोग कर सकते हैं। लोक अनुक्रमणिका द्वारा पंक्तियों का चयन करता है (इलोक की तरह पूर्णांक-स्थान नहीं) जो डिफ़ॉल्ट रूप से numpy मैट्रिक्स में पंक्ति की अनुक्रमणिका है।
In [132]: df1
Out[132]:
x y events
0 5 20
2 7 22
4 9 24
In [133]: df2
Out[133]:
x y events
1 6 21
3 8 23
In [134]: df3 = df1.append(df2)
In [135]: df3
Out[135]:
x y events
0 5 20
2 7 22
4 9 24
1 6 21
3 8 23
In [137]: df3.loc[3,:]
Out[137]:
x 8
y 23
events
Name: 3, dtype: object