首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按存储在不同列中的复合队列排序

按存储在不同列中的复合队列排序
EN

Stack Overflow用户
提问于 2020-12-19 22:03:18
回答 1查看 73关注 0票数 2

假设我有一个数据框,其中3列包含参数。因此,所有可能的队列都是组合:假设这些列有“鸭子”、“猫”、“狗”,另一个是“白”、“灰”、“黑”,最后一列是“小”、“大”。因此,队列中有小灰鸭、大黑猫等。

因此,如何通过存储在其中的所有可能的队列对数据帧进行分组?我需要这个来计算所有队列的特定值。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-19 22:21:49

例如:

代码语言:javascript
复制
cols1 = set(df['col1'])
cols2 = set(df['col2'])
cols3 = set(df['col3'])
df = pd.DataFrame([[x,y,z] for x in cols1 for y in cols2 for z in cols3], columns=['col1', 'col2', 'col3'])
df.drop_duplicates(keep="first", inplace=True)

您也可以使用循环(在df.columns.tolist()上循环)并将序列值存储到字典中来完成此操作。

(这可以帮助您收集所有可能的队列组合)

编辑:

要对第一个数据帧中的组合进行分组,您可以这样做:

df.groupby('col1','col2',‘col3’)‘col4’..mean()

EDIT 2 :

代码语言:javascript
复制
from functools import reduce
cols = [df[[col]].drop_duplicates(keep='first') for col in ['col1', 'col2', 'col3']]
for sub_df_col in cols:
  sub_df_col['CARTESIAN_PRODUCT'] = 1 #you now have a new column which the same value everywhere
df2 = reduce(lambda  left,right: pd.merge(left,right,on=['CARTESIAN_PRODUCT'], how='outer'), cols).drop('CARTESIAN_PRODUCT', axis=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65370626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档