如果满足条件,则将listseries中的n元素附加到另一个listseries

2024-06-26 14:44:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下DF(带有硬编码的预期结果)

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"]]})

在其中,我想将list2list2[-1])的最后一个元素添加/附加到list1,如果它==“test3”

尝试了以下操作但无效:

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

也可能有人在某个时候失去了理智,不是“test3”而是“test3”,所以可能需要一个正则表达式匹配


Tags: 元素dataframe编码dfaddedpdtest1test2
1条回答
网友
1楼 · 发布于 2024-06-26 14:44:52

测试最后一个转换为小写的值,如果匹配,则添加到一个元素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]  

相关问题 更多 >