在非数字列中搜索字符串值
searching a string value in a non-numeric column
在包含 20000 场国际象棋比赛的数据框中,有一列名为 opening_name
。
此列中的所有值都是这样的字符串:
1 Nimzowitsch Defense: Kennedy Variation
2 King's Pawn Game: Leonardis Variation
3 Queen's Pawn Game: Zukertort Variation
4 Philidor Defense
...
20053 Dutch Defense
20054 Queen's Pawn
20055 Queen's Pawn Game: Mason Attack
20056 Pirc Defense
20057 Queen's Pawn Game: Mason Attack
在这个专栏中,有将近一百个具有相似名称的值,相似的名称如 Sicilian defence
和 Sicilian defence: dragon variation
我想访问所有这些以字符串 [=12= 开头的值].我该怎么做?
据我了解,: 之前的字符串部分是起始字符串,其后的值是变体。
第 1 步:通过拆分提取所有行的前缀值:
df['base_term']=df.opening_name.apply(lambda x: x.split(":")[0])
这将 return 一个包含值或起始字符串的新列。
第 2 步:检索具有给定起始字符串的行,例如“西西里防御”。
res = df.loc[df.base_term=='Sicilian defence']
res 是具有 opening_name 以 'Sicilian defence'
开头的行的数据框
尝试使用 str
的矢量化方法。 使用 apply
和 lambda
函数效率非常低。
df.fname = df.opening_name.str.split(':').str[0]
0 Nimzowitsch Defense
1 Kings Pawn Game
2 Queens Pawn Game
3 Philidor Defense
dtype: object
只需使用.loc
-
即可获取
df.loc[df.fname=='Sicilian defence']
在包含 20000 场国际象棋比赛的数据框中,有一列名为 opening_name
。
此列中的所有值都是这样的字符串:
1 Nimzowitsch Defense: Kennedy Variation
2 King's Pawn Game: Leonardis Variation
3 Queen's Pawn Game: Zukertort Variation
4 Philidor Defense
...
20053 Dutch Defense
20054 Queen's Pawn
20055 Queen's Pawn Game: Mason Attack
20056 Pirc Defense
20057 Queen's Pawn Game: Mason Attack
在这个专栏中,有将近一百个具有相似名称的值,相似的名称如 Sicilian defence
和 Sicilian defence: dragon variation
我想访问所有这些以字符串 [=12= 开头的值].我该怎么做?
据我了解,: 之前的字符串部分是起始字符串,其后的值是变体。
第 1 步:通过拆分提取所有行的前缀值:
df['base_term']=df.opening_name.apply(lambda x: x.split(":")[0])
这将 return 一个包含值或起始字符串的新列。
第 2 步:检索具有给定起始字符串的行,例如“西西里防御”。
res = df.loc[df.base_term=='Sicilian defence']
res 是具有 opening_name 以 'Sicilian defence'
开头的行的数据框尝试使用 str
的矢量化方法。 使用 apply
和 lambda
函数效率非常低。
df.fname = df.opening_name.str.split(':').str[0]
0 Nimzowitsch Defense
1 Kings Pawn Game
2 Queens Pawn Game
3 Philidor Defense
dtype: object
只需使用.loc
-
df.loc[df.fname=='Sicilian defence']