如何使用Python pandas按每行id条目数计算均分价格并拆分多行
最简实现方案(适合入门学习者)
你可以在拆分id前先统计每行的id总数量,算出单条id对应的分摊价格后再执行展开操作,逻辑直白好理解,完整可运行代码如下:
import pandas as pd # 原始数据构造 data = {'id': ['id_01, id_02', 'id_03', 'id_04', 'id_05', 'id_06, id_07, id_08'], 'price': [100, 200, 300, 400, 500]} df = pd.DataFrame(data) # 1. 统计每行id的总个数 df['id_count'] = df['id'].str.split(',').str.len() # 2. 计算分摊后的单id价格 df['shared_price'] = df['price'] / df['id_count'] # 3. 拆分id并展开为多行 new_df = df.assign(new_id=df['id'].str.split(',')).explode('new_id') # 如不需要原id、原price、id_count列,可删除多余列: # new_df = new_df.drop(columns=['id', 'price', 'id_count'])
如果想要更精简的写法(不用给原df新增临时列),也可以用链式写法实现:
new_df = (df .assign(id_count = lambda x: x['id'].str.split(',').str.len(), shared_price = lambda x: x['price'] / x['id_count'], new_id = lambda x: x['id'].str.split(',')) .explode('new_id') )
运行后new_df的shared_price列就是每个拆分后new_id对应的分摊价格。
内容的提问来源于stack exchange,提问作者eduardosteps
相关产品推荐
相关产品推荐

