如何通过正则表达式从 pandas 中的列表中提取元素?
How to extract elements from a list in pandas through regex?
我想提取此 Dataframe 中 'accession' 之后的数字字符串。我的数据框如下所示:
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',...}]
我只想提取'accession'后面的数字代码。因为我认为它是列表的第一个元素,所以我尝试 tgt = targets_list['target_components'][0][0]
,但是这个 returns 是该列表的第一个元素,而不是登录号。
我可以看到它是每一行中的一个列表,但是我缺少的是如何解析该列表并获取该数字并将其添加到列中。 Regex 应该可以吗?但我完全不确定 Regex 是如何工作的。
您可以使用 .findall() 函数或 .extract() 来获取 id。
参考:
你可以试试这个:
targets_list['target_components'].map(lambda x: x[0].get("accession"] if x else '')
首先,无需再次使用 pd.DataFrame
从现有列创建数据框:
targets_list = targets_df[['target_components', 'target_chembl_id']]
然后可以使用apply
访问列元素
tgt = targets_list['target_components'].apply(lambda x: x[0]['accession'])
你可以试试:
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
我想提取此 Dataframe 中 'accession' 之后的数字字符串。我的数据框如下所示:
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',...}]
我只想提取'accession'后面的数字代码。因为我认为它是列表的第一个元素,所以我尝试 tgt = targets_list['target_components'][0][0]
,但是这个 returns 是该列表的第一个元素,而不是登录号。
我可以看到它是每一行中的一个列表,但是我缺少的是如何解析该列表并获取该数字并将其添加到列中。 Regex 应该可以吗?但我完全不确定 Regex 是如何工作的。
您可以使用 .findall() 函数或 .extract() 来获取 id。
参考:
你可以试试这个:
targets_list['target_components'].map(lambda x: x[0].get("accession"] if x else '')
首先,无需再次使用 pd.DataFrame
从现有列创建数据框:
targets_list = targets_df[['target_components', 'target_chembl_id']]
然后可以使用apply
访问列元素
tgt = targets_list['target_components'].apply(lambda x: x[0]['accession'])
你可以试试:
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