从数据框列中提取元组列表的 select 个元素

Extract select elements of a list of tuples from a dataframe column

我有一个包含列的数据框,其中包含一个元组列表作为其值,如下所示。

df1

Index  Text
-----  -----
0      [('ABC', 'NNP'), ('-', ':'), ('Jack', 'NNP'), ('Investment', 'NNP'), ('Activity', 'NN')]

我正在尝试创建一个新列,其中包含一个列表,该列表具有原始值中每个元组的第二个元素。

当我创建一个函数并通过传递上面的文本进行测试时,它按我预期的方式工作。

def get_second_element(newlist):
  newlist2 = newlist
  mylist = [item[1] for item in newlist]
  return mylist
get_second_element([('ABC', 'NNP'), ('-', ':'), ('Jack', 'NNP'), ('Investment', 'NNP'), ('Activity', 'NN')])

结果:['NNP'、':'、'NNP'、'NNP'、'NN']

当我将该函数应用于数据框列时,

df1['Text'] = get_second_element(df1['Text'])

df1
Index  Text
-----  -----
0      (

假设它是长字符串,它只是提取第二个字符。

感谢任何建议。谢谢!

谢谢马克。我专注于您的最后建议并尝试转换数据类型。我还使用正则表达式来查找我正在寻找的字符串。

def get_second_element(text):
  text2 = str(text)
  text3 = re.findall('\, \'(.*?)\)', text2)
  text3 = str(text3)
  return text3

df1['Text'] = df1['Text'].apply(get_second_element)
df1
Index  Text
-----  -----
0      ["NNP'", ":'", "NNP'", "NNP'", "NN'"]

我可能需要稍微清理一下,但这就是我想要的。