मेरे पास निम्नलिखित डीएफ है (वांछित परिणाम हार्डकोड के साथ)

dfo = pd.DataFrame({"list1": [["test1", "test2"], ["test1", "test2", "test3"], ["test1", "test2"]], 
                    "list2": [["notatest", "test3"], ["notatest"], ["notatest", "Test3"]],
                    "desired": [["test1", "test2", "test3"], ["test1", "test2", "test3"], ["test1", "test2", "Test3"]]})

जिसमें मैं list2 (list2[-1]) के अंतिम तत्व को list1 में जोड़ना/जोड़ना चाहता हूं यदि यह == "test3" है।

कोई फायदा नहीं हुआ निम्नलिखित की कोशिश की:

dfo["list1_test3_added"] = dfo["list1"].apply(lambda x: x.append([i for i in x["list2"][-1] if i == "test3"]))

यह भी मामला हो सकता है कि किसी बिंदु पर कोई अपना दिमाग खो देता है और यह "टेस्ट 3" नहीं बल्कि "टेस्ट 3" है, इसलिए शायद एक रेगेक्स मैच की आवश्यकता होगी।

2
cjcrm 29 सितंबर 2020, 16:11

1 उत्तर

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

परीक्षण अंतिम मान को लोअरकेस में परिवर्तित किया गया और यदि मिलान एक तत्व list में जोड़ें और अंतिम कॉलम में जोड़ें list1:

s = dfo["list2"].apply(lambda x: [x[-1]] if x[-1].lower() == "test3" else [])
dfo["list1_test3_added"] = dfo["list1"] + s
print (dfo)
                   list1              list2                desired  \
0         [test1, test2]  [notatest, test3]  [test1, test2, test3]   
1  [test1, test2, test3]         [notatest]  [test1, test2, test3]   
2         [test1, test2]  [notatest, Test3]  [test1, test2, Test3]   

       list1_test3_added  
0  [test1, test2, test3]  
1  [test1, test2, test3]  
2  [test1, test2, Test3]  
1
jezrael 29 सितंबर 2020, 13:30