如何在包含字符串,逗号和整数的括号内提取字符串?



我正试图拉一个字符串名称,它是在一个括号内,包含字符串后面跟着逗号和一个整数。

我当前的数据帧输出是这样的:

print df1:
name                                    matches      best match        best 2        best 3
0  aparna    [(aparn, 91), (Pankaj, 67), (arup, 45)]     (aparn, 91)  (Pankaj, 67)    (arup, 45)
1  pankaj    [(Pankaj, 100), (aparn, 55), (abc, 30)]   (Pankaj, 100)   (aparn, 55)     (abc, 30)
2  sudhir  [(sudhir c, 95), (arup, 22), (aparn, 18)]  (sudhir c, 95)    (arup, 22)   (aparn, 18)
3   Geeku     [(Geek, 89), (arup, 22), (Pankaj, 18)]      (Geek, 89)    (arup, 22)  (Pankaj, 18)

但是我希望数据帧的输出是这样的:

print df1:
name                                    matches   best match   best 2   best 3
0  aparna    [(aparn, 91), (Pankaj, 67), (arup, 45)]     aparn      Pankaj   arup
1  pankaj    [(Pankaj, 100), (aparn, 55), (abc, 30)]     Pankaj     aparn    abc
2  sudhir  [(sudhir c, 95), (arup, 22), (aparn, 18)]     sudhir c   arup     aparn
3   Geeku     [(Geek, 89), (arup, 22), (Pankaj, 18)]     Geek       arup     Pankaj

我现在有我的df列:

dframe1['best match'] = dframe1['matches'].str[0] #first best match (new column)
dframe1['best 2'] = dframe1['matches'].str[1] #2nd best match
dframe1['best 3'] = dframe1['matches'].str[2] #3nd best match

我试过使用str.extract,但我对如何只专注于抓取字母模式感到困惑。

我的第一个猜测是,你的问题不是关于字符串处理,而是关于访问数组和元组内部的项目。这对你有用吗?

dframe1['best match'] = dframe1['matches'][0][0] #first best match (new column)

一些注释作为解释:

  • dframe1['matches'][0]指向数组中的第一项:("aparn", 91)。这是一个Python元组
  • dframe1['matches'][0][0]指向这个元组中的第一项:"aparn"

在Python中处理元组的更多细节:https://www.w3schools.com/python/python_tuples.asp

解决这个问题的方法是使用.apply函数。

我将.apply(lambda x: x[0])添加到dframe1['best match'] = dframe1['matches'].str[0]的末尾,并且成功创建了所需的输出。

dframe1['best match'] = dframe1['matches'].str[0].apply(lambda x: x[0])

也试着@KonstantinA。感谢Magg和@Samwise的帮助。它是一个元组,可以帮助查找要使用的正确函数。

最新更新