我正试图拉一个字符串名称,它是在一个括号内,包含字符串后面跟着逗号和一个整数。
我当前的数据帧输出是这样的:
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的帮助。它是一个元组,可以帮助查找要使用的正确函数。