(कृपया ध्यान दें कि मुझे एक ऐसा तरीका खोजने की उम्मीद है जो सूची समझ का उपयोग न करे)
मान लीजिए मेरे पास निम्न डेटा है (0,1,2 पंक्ति संख्या को अनुक्रमित करता है और [[111,20,3,4], [5,66,7,8], [9,10,11,12]]
एक मूल मैट्रिक्स की पंक्तियाँ हैं)
df1 = [(0, [111, 20, 3, 4]),
(1, [5, 66, 7, 8]),
(2, [9, 10, 11, 12])]
और मैं मानचित्र फ़ंक्शन के अंदर 2 लैम्ब्डा फ़ंक्शंस के साथ निम्न आउटपुट प्राप्त करना चाहता हूं। यह प्रारूप का है: (transposed_row_num, (original_row_num, value)) प्रत्येक पंक्ति के लिए जोड़े (उदाहरण के लिए, पंक्ति [111, 20, 3, 4]
आदि है)।
Transposed_row_num इन पंक्तियों की स्तंभ संख्या है। उदाहरण के लिए, पंक्ति 0 में 20 में कॉलम नंबर 1 है, इसलिए यह (1,(0,20))
होना चाहिए:
# Desired output:
[[(0, (0, 111)), (1, (0, 20)), (2, (0, 3)), (3, (0, 4))],
[(0, (1, 5)), (1, (1, 66)), (2, (1, 7)), (3, (1, 8))],
[(0, (2, 9)), (1, (2, 10)), (2, (2, 11)), (3, (2, 12))]]
मैंने निम्नलिखित कोड की कोशिश की, लेकिन मुझे एक त्रुटि मिली:
map2 = map(lambda x: [x[0]] + list(map(lambda y: y[0], x[1].index(y))),
df1)
list(map2)
# ValueError: [[111, 20], [3, 4]] is not in list
2 जवाब
आप इसे नेस्टेड
list comprehension
के साथ कर सकते हैं जो अधिक आसान है और कोड अच्छा हैresult = [ [(idx_in, (row[0], val)) for idx_in, val in enumerate(row[1])] for row in df1 ]
फिर बाहरी
list comprehension
कोmap
ऑपरेशन में बदलेंresult = list(map(lambda row: [(idx_in, (row[0], val)) for idx_in, val in enumerate(row[1])], df1))
फिर आंतरिक
list comprehension
कोmap
ऑपरेशन में बदलेंresult = list(map(lambda row: list(map(lambda idx_val: (idx_val[0], (row[0], idx_val[1])), enumerate(row[1]))), df1))
यदि आप सूची समझ और गणना का उपयोग नहीं करना चाहते हैं, तो आप इसे आजमा सकते हैं:
df1 = [(0, [111, 20, 3, 4]),
(1, [5, 66, 7, 8]),
(2, [9, 10, 11, 12])]
map2 = list(map(lambda row:
list(map(lambda val: (row[1].index(val), (row[0], val)), row[1])), df1))
आउटपुट:
map2
[[(0, (0, 111)), (1, (0, 20)), (2, (0, 3)), (3, (0, 4))],
[(0, (1, 5)), (1, (1, 66)), (2, (1, 7)), (3, (1, 8))],
[(0, (2, 9)), (1, (2, 10)), (2, (2, 11)), (3, (2, 12))]]
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।