【发布时间】:2021-12-02 12:11:58
【问题描述】:
我有一个练习,如果三列中的数据相同,我需要将几行或几行转换为一行。
substances = pd.DataFrame({'id': ['id_1', 'id_1', 'id_1', 'id_2', 'id_3'],
'part': ['1', '1', '2', '2', '3'],
'sub': ['paracetamolum', 'paracetamolum', 'ibuprofenum', 'dienogestum', 'etynyloestradiol'],
'strength': ['150', '50', '50', '20', '30'],
'unit' : ['mg', 'mg', 'mg', 'mg', 'mcg'],
'other irrelevant columns for this task' : ['sth1' , 'sth2', 'sth3', 'sth4', 'sth5']
})
现在只要id、part、substance都一样,我要把它排成一行,所以最终的结果是:
| id | part | strength | substance | unit |
|---|---|---|---|---|
| id_1 | 1 | '150 # 50' | paracetamolum | mg |
| id_1 | 2 | 50 | ibuprofenum | mg |
| id_2 | 2 | 20 | dienogestum | mg |
| id_3 | 3 | 30 | etynyloestradiol | mcg |
我遇到的问题是,我无法将这些行合并为一行以显示可能的强度,例如 '150 # 50' 我尝试过这样的事情,但效果不佳:
substances = substances.groupby('id', 'part', 'sub', 'strength').id.apply(lambda x: str(substances['strength']) + ' # ' + str(next(substances['strength'])))
【问题讨论】:
标签: python-3.x pandas