मैं अजगर में एक विश्लेषण स्क्रिप्ट पर काम कर रहा हूं और मैंने यह जांचने के लिए कुछ पंक्तियाँ जोड़ीं कि मैं पंक्ति संख्याओं का मिलान नहीं कर रहा था और मैंने इसे लिखा था

smallest_Val = min(len(InputDataFrame),len(Output_Data_set))
print(smallest_Val)
print(len(Output_Data_set.loc[0:smallest_Val, 'Time']))
print(len(InputDataFrame.loc[0:smallest_Val, 'Time']))

मुझे जो आउटपुट मिला वह मेरे लिए शून्य मायने रखता है

69841
69842  <-------
69841

यहाँ पृथ्वी पर क्या हो रहा है ?! मैंने इसे एक दर्जन बार चलाया है और मैं इसे एक मान से अलग करता रहता हूं। मैंने निपटने के लिए एक कठिन समाधान जोड़ा है, लेकिन "क्यों" मेरे लिए बहुत अधिक है।

अतिरिक्त जानकारी के लिए, Output_Data_set 100k पंक्तियाँ हैं, जिनका उपयोग करके बनाया गया है

zero_data = np.zeros(shape=(100000,len(Full_Names)))
Output_Data_set = pd.DataFrame(zero_data, columns=Full_Names)

और, इनपुटडेटाफ्रेम एक सीएसवी में पढ़कर बनाया गया है (सीएसवी फ़ाइल एक गड़बड़ है)

InputDataFrame = pd.read_csv(filename, usecols=[(6*run+1),(6*run+2),(6*run+3),(6*run+4),(6*run+5),(6*run+6)], header=24)
0
Diesel 14 मार्च 2020, 21:54

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि मेरे पास एक संभावित स्पष्टीकरण है। मुझे लगता है कि गलतफहमी numpy arrays, Python या df.loc के बीच के अंतर से आती है।

Smallest_Val 69841 है, और मान लेते हैं कि यह लेन है (InputDataFrame)

यदि आप कोशिश करते हैं कि लेन (df.loc [0:10]) एक साधारण पांडा डेटाफ्रेम पर कैसे व्यवहार करता है, तो यह समावेशी है, इसलिए यह 11 पंक्तियों को वापस कर देगा, यह देखते हुए कि इसमें कम से कम 11 पंक्तियाँ हैं।

बड़े डेटाफ़्रेम (output_data_set) के लिए यह ठीक यही करता है। छोटे के लिए, क्योंकि इसमें बिल्कुल 69841 पंक्तियाँ हैं, यह केवल पंक्तियों की कुल मात्रा लौटाता है, क्योंकि यह अधिक का चयन नहीं कर सकता है। तो यह सिर्फ पूरे डेटाफ्रेम को लौटाता है।

तब समाधान केवल 1 को Smallest_Val से घटाना होगा।

1
boomkin 14 मार्च 2020, 19:17