按元素列表对以某条str

时间:2019-10-17 17:54:43

标签: pandas

我有一个列表:

['Ad','Cs']

还有一个df

       xx  yy  zz
Adjsl   5   7   9
Adjrr   1   1   2
Blsda   6   6   6
Csaosq  8   7   2

我想知道如何通过仅将那些索引开头的行与列表的元素保持在一起来切片df,以获得以下输出:

       xx  yy  zz
Adjsl   5   7   9
Adjrr   1   1   2
Csaosq  8   7   2

2 个答案:

答案 0 :(得分:1)

您可以使用match

lst = ['Ad','Cs']
pattern = '|'.join(lst)

df[df.index.str.match(f'^({pattern})')]

输出:

        xx  yy  zz
Adjsl    5   7   9
Adjrr    1   1   2
Csaosq   8   7   2

答案 1 :(得分:1)

我们使用Series.str.startswith。 在这里,您可以将其与pd.concat结合使用:

df_filtered=pd.concat([df[df.index.str.startswith(key)] for key in my_list])
print(df_filtered)

        xx  yy  zz
Adjsl    5   7   9
Adjrr    1   1   2
Csaosq   8   7   2