问题描述
希望大家都过得好。我正在使用 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)