भंडारण पंक्तियों एक गलती हो सकता है क्योंकि कुछ भी इस रूप में डेटा के साथ उपयोगी कर अजीब है जाता है।
import numpy as np
import pandas as pd
import operator
pa = pd.DataFrame({'a':np.array([[1.,4.],[2.],[3.,4.,5.]])})
print(pa['a'].map(operator.itemgetter(0)))
# 0 1
# 1 2
# 2 3
# Name: a, dtype: float64
या फिर आप एक सूची समझ इस्तेमाल कर सकते हैं:
यहाँ वांछित डेटा पर प्राप्त करने के लिए दो तरीके हैं, जिनमें से न तो बहुत सुंदर है कर रहे हैं
print([item[0] for item in pa['a']])
# [1.0, 2.0, 3.0]
कि इस दूसरी विधि दिखता है इतना आसान संकेत हो सकता है कि सूचियों की एक सूची यहां एक अधिक उपयुक्त डेटा संरचना हो सकती है।
आप एक पांडा तालिका का उपयोग करना चाहते हैं, तो यह अपने आप ही स्तंभ में प्रत्येक मान स्टोर करने के लिए बेहतर हो सकता है:
0 1 2
0 1 4 NaN
1 2 NaN NaN
2 3 4 5
यह और अधिक स्मृति की आवश्यकता हो सकती है, लेकिन डेटा एक में है फॉर्म जो अधिक उपयोगी हो सकता है।
आप इस तरह इस नए एक में अपने DataFrame परिवर्तित कर सकते हैं:
In [314]: pa = pa['a'].apply(lambda row: pd.Series(row)); pa
Out[314]:
0 1 2
0 1 4 NaN
1 2 NaN NaN
2 3 4 5
और अब प्रत्येक पंक्ति से पहले मान का चयन आसान है:
In [315]: pa[0]
Out[315]:
0 1
1 2
2 3
Name: 0, dtype: float64
यह भी बहुत अन्य विकल्पों की तुलना में तेजी है :
In [5]: pa2 = pa['a'].apply(lambda row: pd.Series(row))
In [6]: %timeit pa2[0]
100000 loops, best of 3: 1.95 µs per loop
In [10]: %timeit [item[0] for item in pa['a']]
100000 loops, best of 3: 14.4 µs per loop
In [9]: %timeit pa['a'].map(operator.itemgetter(0))
10000 loops, best of 3: 44 µs per loop
In [13]: %timeit pa['a'].str[0]
10000 loops, best of 3: 67.2 µs per loop
धन्यवाद। अच्छा समाधान – jankos