Pandas系列||获取字符串索引(如果存在)

jei2mxaa  于 2023-08-01  发布在  其他
关注(0)|答案(4)|浏览(105)

请原谅我。我对pandas是新手,在里面使用series。

import pandas as pd

s = pd.Series(["koala", "dog", "chameleon"])

字符串
'dog' in s.values-这允许测试是否存在。
s.isin(['dog']).any()-这是真的。但是没有任何方法来获取索引或使用find。
如何找到“狗”的索引/位置?
第二,如果我有重复的条目(例如狗):

s = pd.Series(["koala", "dog", "chameleon","dog"])


我如何找到第一次或最后一次发生的事件?
Python 3X(OS X,M1):
Python 3.9.8 (v3.9.8:bb3fdcfe95, Nov 5 2021, 16:40:46) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin

4dbbbstv

4dbbbstv1#

我通常做的是:

#....in clause like
i = s.index[s.str.contains('dog')]

字符串
对应于“in”子句。如果你想要正确的匹配,你可以使用“eq”:

i2 = s.index[s.eq('dog')]


在这种情况下,它们当然产生了相同的指数。

nnsrf1az

nnsrf1az2#

您可以使用[].index获取series中值的索引。

s = pd.Series(["koala", "dog", "chameleon"])
s[s == 'dog'].index

字符串
类似地,使用min()max()获取第一个和最后一个匹配项:

s = pd.Series(["koala", "dog", "chameleon","dog"])
d_first, d_last = s[s == 'dog'].index.min(), s[s == 'dog'].index.max()

qojgxg4l

qojgxg4l3#

更改过滤器index的布尔掩码的顺序,并使用iter获取next中的最后一个值:

m = s.eq('dog')[::-1]
#if list
m = s.isin(['dog'])[::-1]

print (next(iter(m.index[m]), 'no match'))
3

字符串
如果总是匹配,则使用simpier:

print (m[m].index[-1])
3

wko9yo5t

wko9yo5t4#

为了改进@sophocles的答案,我发现这给予正确的答案。
第一个月

相关问题