df = pd.DataFrame([['an apple is red', 'pop is here'],['pear  is green', 'see is blue']], columns=['A', 'B']
from nltk.tokenize import TweetTokenizer
df['A'] = [TweetTokenizer().tokenize(text) for text in df['A']]
df['id']=[1,2]
for k in df['A']:
    print(k)
    pid = df[df['A']==k]['id'].values[0]
    ['an', 'apple', 'is', 'red']
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-156-f9e4fa5143b0> in <module>
      1 for k in df['A']:
      2     print(k)
----> 3     pid = df[df['A']==k]['id'].values[0]

~/Library/Python/3.7/lib/python/site-packages/pandas/core/ops.py in wrapper(self, other, axis)
   1743             # as it will broadcast
   1744             if other.ndim != 0 and len(self) != len(other):
-> 1745                 raise ValueError('Lengths must match to compare')
   1746 
   1747             res_values = na_op(self.values, np.asarray(other))

ValueError: Lengths must match to compare

मैं पिड प्राप्त करना चाहता हूं जब के कॉलम ए की प्रत्येक पंक्ति के बराबर होता है। जब प्रत्येक पंक्ति स्ट्रिंग होती है तो मैं इसे बना सकता हूं। यह कैसे करें जब प्रत्येक पंक्ति एक सूची है?

एक बार मिलान करने के बाद, मुझे 'आईडी' का संबंधित मान मिलता है

अपेक्षित पिड आउट पुट: 1 2

-1
lol 2 जिंदा 2020, 08:35

1 उत्तर

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

मैंने आपके कोड में कुछ बदलाव किए हैं और यह आपके प्रश्न के अनुसार सही ढंग से पिड लौटा रहा है।

df = pd.DataFrame([['an apple is red', 'pop is here'],['pear  is green', 'see is blue']], columns=['A', 'B'])
from nltk.tokenize import TweetTokenizer
df['A'] = [TweetTokenizer().tokenize(text) for text in df['A']]
df['id']=[1,2]
for k in df['A']:
    print(k)
    pid = df[df['A'].map(tuple)==tuple(k)]['id'].values[0]
    print(pid)

चूंकि list तुलना dataframe में गड़बड़ है, इसलिए कॉलम मानों को tuple में बदलना और फिर तुलना करना बेहतर है।

यदि आपको यहां प्रत्येक पंक्ति की केवल अनुक्रमणिका की आवश्यकता है तो आप पुनरावृत्ति करते समय dataframe पंक्तियों की अनुक्रमणिका प्राप्त करने पर भी विचार कर सकते हैं।

0
UserAG 2 जिंदा 2020, 07:19