根据起始字母从数据框中的列中提取值

问题描述

希望大家都过得好。我正在使用 Pandas 和 numpy,我想根据 Dataframe 中的前 3 个字母 (ap.) 提取列值。以下是我的数据框示例。

姓名 数字
橙色 2
苹果 6
Ap.ricot 1
AP.19 1
Juap.rte 3

我试过 df[df['Name'].str.lower().str.contains('ap.',na=False)].Name.unique() 但它并没有完全做到这一点.

输出

['AP.19','Ap.ricot']

理想情况下,输出应该是一个列表,然后我可以将其保存到变量中。此外,这 3 个字母必须在开头并按此顺序排列。

我对 Python 非常陌生,所以请尽可能清楚地解释。谢谢。

解决方法

鉴于帖子中的评论,我相信您可以通过以下方式完成:

ap = [x for x in df['Name'] if x.lower().startswith('ap.')]

如果你不希望有重复,那么你可以使用:

ap = [x for x in df['Name'].unique() if x.lower().startswith('ap.')]
,

这可能对您有所帮助:

final = []


df['NameCopy'] = df['Name'].str.lower()


for index,row in df.iterrows():
   if row['NameCopy'].find('ap.') != -1:
      final += [row['Name']]
   else:
      pass

print(final)
,

试试:

df[df['Name'].str.match('^(ap[.])',case=False)].Name.unique() 

array(['Ap.ricot','AP.19'],dtype=object)