2024-03-28 11:21:55 发布
网友
我有这样的数据帧:
ID | Name | Thing | belongs | match ---+------+-------+---------+----- 1 John 10 1,2,3 9 2 John 10 2,4 8
输出应为:
John 10 1,2,3,2,4 9,9,9,8,8
我如何将它们分组?你知道吗
def f(df): lol = df.belongs.str.split(',').tolist() lens = [len(lst) for lst in lol] belongs = ','.join(map(str, np.concatenate(lol))) match = ','.join(map(str, df.match.repeat(lens).tolist())) return pd.Series(dict( belongs=belongs, match=match )) df.groupby(['Name', 'Thing']).apply(f).reset_index() Name Thing belongs match 0 John 10 1,2,3,2,4 9,9,9,8,8
稍微不同的方法。确定差异是留给读者的任务。你知道吗
def f(df): lens = df.belongs.str.count(',') + 1 belongs = df.belongs.str.cat(sep=',') match = df.match.repeat(lens).map(str).str.cat(sep=',') return pd.Series(dict( belongs=belongs, match=match )) print(df.groupby(['Name', 'Thing']).apply(f).reset_index()) Name Thing belongs match 0 John 10 1,2,3,2,4 9,9,9,8,8
稍微不同的方法。确定差异是留给读者的任务。你知道吗
相关问题 更多 >
编程相关推荐