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

时间:2017-10-19 16:14:43

标签: python pandas dataframe

我对我的数据框有疑问。具体来说,在一列中,对于每一行,我都有一个发言者和演讲清单。现在,我想根据扬声器是否是我正在寻找的扬声器来选择一个语音,这在另一个专栏中有所提及。因此,一列提供了我要查找的姓​​氏,另一列提供了所有发言者(名字和姓氏)及其语音的列表,我想创建一个新列,其中此语音存储在相应的行中。

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

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"

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

ExcelWorksheet

有人可以帮我解决如何在Python 3中解决这个问题吗?

谢谢!! 朱莉娅

1 个答案:

答案 0 :(得分:2)

这可能是通过编写函数然后逐行应用来实现的:

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)