Pandas:如果同一行中的另一个单元格包含字符串,则将变量设置为单元格中的值

时间:2016-09-15 09:49:39

标签: python pandas

假设我的Pandas DataFrame包含以下内容:

Row    Firstname    Middlename Lastname
…
10     Roy         G.          Biv
11     Cnyder      M.          Uk
12     Pan         T.          One
…

如果["Lastname"]中的单元格包含"Biv",我想将Python变量first_name =设置为"Roy"

我已经离开熊猫一段时间了,我不确定正确的方法来实现这一目标。我已经研究了将df.iloc / df.loc等与df.at/df.wherestr.contains结合起来的方法,但不得不承认我在适当的方式上放弃了条件连同设置变量。

在(差,不正确的)伪代码中,我正在寻找:

first_name = df["Firstname"][np.where([df["Lastname"].str.contains("Biv") ...

1 个答案:

答案 0 :(得分:1)

如果您只想要标量值,那么您可以访问结果数组中的第一个值并指定它:

firstname = df.loc[df['Lastname'].str.contains('Biv'), 'Firstname'][0]

请注意,实际上您应该检查它是否为空:

if len(df.loc[df['Lastname'].str.contains('Biv'), 'Firstname']) > 0:
    firstname = df.loc[df['Lastname'].str.contains('Biv'), 'Firstname'][0]