如果列表的键包含另一列的字符串,请从列表中选择一个条目

2024-04-20 15:37:17 发布

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

我有一个关于我的数据帧的问题。具体来说,在一列中,每一行我都有一个发言者和发言的列表。现在,我想根据演讲者是否是我要找的人来选择一个演讲,这会在另一个专栏中注明。因此,一列提供我要查找的姓氏,另一列提供所有演讲者(名字和姓氏)及其演讲的列表,我想创建一个新的列,将此演讲存储在相应的行中。你知道吗

我的初始数据集如下所示:

ticker  year    quarter exel_lname  jobposition speech
xx      2009    1       Angle       CEO         [("Mike Angle", "Thank you"), ("Barbara Barth", "It is")]
xx      2009    1       Barth       CFO         [("Mike Angle", "Thank you"), ("Barbara Barth", "It is")]
xx      2009    2       Angle       CEO         [("Mike Angle", "I am surprised"), ("Barbara Barth", "So am I")]
xx      2009    2       Barth       CFO         [("Mike Angle", "I am surprised"), ("Barbara Barth", "So am I")]
yy      2008    3       Cruz        CEO         [("Damien Cruz", "Hello"), ("Lara Dolm", "Nice to meet you")]
yy      2008    3       Dolm        CFO         [("Damien Cruz", "Hello"), ("Lara Dolm", "Nice to meet you")]

以第一行为例,我想检查每个键值对的第一个列表条目是否包含姓氏,如果否,继续,如果是,则取语音部分(即第二个列表条目)并将其存储在新列中。因此,我需要以下数据集(我在这里隐藏了初始列speech,但它仍然应该被包含,所以我不想替换它,只是创建一个新列)。你知道吗

ticker  year    quarter exel_lname  jobposition speechmanager
xx      2009    1       Angle       CEO         "Thank you"
xx      2009    1       Barth       CFO         "It is"
xx      2009    2       Angle       CEO         "I am surprised"
xx      2009    2       Barth       CFO         "So am I"
yy      2008    3       Cruz        CEO         "Hello"
yy      2008    3       Dolm        CFO         "Nice to meet you"

有人能帮我在python3中解决这个问题吗?你知道吗

谢谢你!! 朱莉娅


Tags: 数据you列表ammikexx姓氏angle
1条回答
网友
1楼 · 发布于 2024-04-20 15:37:17

最好的方法是编写一个函数,然后按行应用它:

def get_speech(row):
    matches = list(filter(lambda x: x[0].endswith(row['exel_lname']), row['speech']))
    if len(matches) > 0:
        return matches[0][1]
    return ''

df['speechmanager'] = df.apply(get_speech, axis=1)

相关问题 更多 >