我有一个蛋白质列表(primaryAccession)和我从UnitProtKB解析的关于它们的信息。我以JSON格式抓取信息,我试图弄清楚如何编写一个循环,将数据分隔到不同的列中。目前我的数据看起来像这样:
| 主要加入|uniProtKB交叉引用|
| --------------|--------------|
| Q14457|'数据库':'Reactome','id':'R-HSA-1632852','属性':['key':'PathwayName',' value ':'Macroautophagy'}]},' database ':'Reactome','id':'R-HSA-5689880','属性':['key':'PathwayName',' value ':'Ub特异性加工蛋白酶'}]}|
| Q08380|'数据库':'ProteomicsDB','id':'59999','属性':['key':'Description','value':'-'}]},'数据库':'Antibodypedia','id':'4116','属性':[{“键”:“抗体”,“值”:'来自47个提供商的1663种抗体'}]}|
我想让它看起来像这样:
| 主要加入|资料库|身份证|性能|
| --------------|--------------|--------------|--------------|
| Q14457|React组|R-HSA-1632852|['key':'PathwayName',' value ':巨噬细胞自噬|
| Q14557|React组|R-HSA-5689880|['key':'PathwayName',' value ':'Ub特异性加工蛋白酶'}]}|
| Q08380|ProteomicsDB|五九九九|['key':'Description','value':'-'}]|
| Q08380|抗体百科|小行星4116|[{“键”:“抗体”,“值”:'来自47个提供商的1663种抗体'}]}|
我已经使用了这个函数(下面的dict_list_to_df)来拆分'unitProtKBCrossReferences'列,但是它删除了primaryAccession列,我不知道如何将其添加回来,以便我可以知道信息所指的是哪个蛋白质。我如何做到这一点,以便在分解'uniProtKBCrossReferences'列时,我仍然可以保留蛋白质ID(primaryAccession)?
def dict_list_to_df(df, col):
"""Return a Pandas dataframe based on a column that contains a list of JSON objects or dictionaries.
Args:
df (Pandas dataframe): The dataframe to be flattened.
col (str): The name of the column that contains the JSON objects or dictionaries.
Returns:
Pandas dataframe: A new dataframe with the JSON objects or dictionaries expanded into columns.
"""
rows = []
for index, row in df[col].items():
for item in row:
rows.append(item)
df = pd.DataFrame(rows)
return df
1条答案
按热度按时间lp0sw83n1#
一个选项是
literal_eval
字典列表,然后explode
它来构造DataFrame
:输出: