【发布时间】:2021-10-17 08:12:41
【问题描述】:
我有以下数据框:
df = pd.DataFrame({'query': ['prefix_v1_0001', 'prefix_v1_0002', 'prefix_v1_0003', 'prefix_v1_0004', 'prefix_v1_0004', 'prefix_v1_0004', 'prefix_v1_0004', 'prefix_v1_0004', 'prefix_v1_0004', 'prefix_v1_0005'],
'knum': ['-', '-', 'K03643', 'K02340', 'K02340', 'K02340', 'K02340', 'K02340', 'K03643', '-'],
'definition': ['-', '-', 'LPS-assembly lipoprotein', 'DNA polymerase III subunit delta [EC:2.7.7.7]', 'DNA polymerase III subunit delta [EC:2.7.7.7]', 'DNA polymerase III subunit delta [EC:2.7.7.7]', 'DNA polymerase III subunit delta [EC:2.7.7.7]', 'DNA polymerase III subunit delta [EC:2.7.7.7]', 'LPS-assembly lipoprotein', '-'],
'A': ['-', '-', 'Brite Hierarchies (09180)', 'Genetic Information Processing (09120)', 'Genetic Information Processing (09120)', 'Genetic Information Processing (09120)', 'Brite Hierarchies (09180)', 'Brite Hierarchies (09180)', 'Brite Hierarchies (09180)', '-'],
'B': ['-', '-', 'Protein families: signaling and cellular processes (09183)', 'Replication and repair (09124)', 'Replication and repair (09124)', 'Replication and repair (09124)', 'Protein families: genetic information processing (09182)', 'Protein families: genetic information processing (09182)', 'Protein families: signaling and cellular processes (09183)', '-'],
'C': ['-', '-', 'Transporters (02000) [BR:ko0200]', 'DNA replication (03030) [PATH:ko0303]', 'Mismatch repair (03430) [PATH:ko0343]', 'Homologous recombination (03440) [PATH:ko0344]', 'DNA replication proteins (03032) [BR:ko0303]', 'DNA repair and recombination proteins (03400) [BR:ko0340]', 'Transporters (02000) [BR:ko0200]', '-']})
我想按query 分组,并使用“|”聚合其他单元格字符。
这是我当前的代码:
df.groupby('query').agg({'knum': lambda x: ' | '.join(x.tolist()),
'definition': lambda x: ' | '.join(x.tolist()),
'A': lambda x: ' | '.join(x.tolist()),
'B': lambda x: ' | '.join(x.tolist()),
'C': lambda x: ' | '.join(x.tolist()),
})
但是,因为有很多重复的单元格内容,我的表格看起来像这样:
但实际上,对于query:prefix_v1_0004,knum 实际上只有 2 个唯一值。
我想去掉所有重复的值,或者aggregate()有办法吗?
【问题讨论】:
标签: python pandas dataframe pandas-groupby aggregate