如何通过正则表达式从熊猫列表中提取元素?



我希望提取在这个数据框中"加入"之后的数字字符串。我的数据框架看起来像这样:

targets_list = pd.DataFrame(targets_df[['target_components', 'target_chembl_id']])

target_components中每列的元素如下所示:

[{'accession': 'O43451', 'component_description': 'Maltase-glucoamylase, intestinal', 'component_id': 434, 'component_type': 'PROTEIN', 'relationship': 'SINGLE PROTEIN', 'target_component_synonyms',...}]

我只想提取"加入"后的数字代码。因为我认为它是列表的第一个元素,所以我尝试tgt = targets_list['target_components'][0][0],但这会返回该列表的第一个元素,而不是加入号。

我可以看到它是每一行中的一个列表,但是如何解析该列表并获得该数字并将其添加到列中是我所缺少的。也许用正则表达式是可能的?但我不确定Regex是如何工作的。

你可以试试:

tgt = targets_list["target_components"].str[0].str["accession"]

结果

targets_list = pd.DataFrame(
{"target_components": [
[{"accession": "O43451", "b": "c", "d": 1}],
[{"accession": "012345", "b": "e", "d": 2}],
[{"b": "f", "d": 3}],
[]]}
)
target_components
0  [{'accession': 'O43451', 'b': 'c', 'd': 1}]
1  [{'accession': '012345', 'b': 'e', 'd': 2}]
2                         [{'b': 'f', 'd': 3}]
3                                           []

0    O43451
1    012345
2      None
3       NaN
Name: target_components, dtype: object

您可以使用。findall()函数或。extract()函数来获取id。

参考:使用正则表达式从pandas数据框架

中提取元素

首先,没有必要再次使用pd.DataFrame从现有列创建数据框:

targets_list = targets_df[['target_components', 'target_chembl_id']]

然后您可以使用apply访问列元素

tgt = targets_list['target_components'].apply(lambda x: x[0]['accession'])

你可以试试:

targets_list['target_components'].map(lambda x: x[0].get("accession"] if x else '')

相关内容

  • 没有找到相关文章

最新更新