假设我有一个数据框,其中3列包含参数。因此,所有可能的队列都是组合:假设这些列有“鸭子”、“猫”、“狗”,另一个是“白”、“灰”、“黑”,最后一列是“小”、“大”。因此,队列中有小灰鸭、大黑猫等。
因此,如何通过存储在其中的所有可能的队列对数据帧进行分组?我需要这个来计算所有队列的特定值。谢谢。
发布于 2020-12-19 22:21:49
例如:
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 :
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)https://stackoverflow.com/questions/65370626
复制相似问题