【发布时间】:2021-01-27 12:05:26
【问题描述】:
我有这个数据
product color size
p1 Red XXL
p2 Blue XL
p3 L
S
我想从列中进行如下组合:
p1, Red, XXL
p1, Red, XL
.
.
p3, Blue, S
我尝试在一个列表中创建所有列,然后使用 itertools.combinations 但结果包含一些不需要的数据,例如:
p1, p2, p3 要么 红色、蓝色、XXL 要么 XXL、XL、S ....我的代码是:
df = read_csv('./GenerateProducts.csv', delimiter=',')
df_columns = df.columns.tolist()
list_data = DataFrame()
for i in df_columns:
list_data = concat([list_data,df[i].dropna(axis=0)])
generated_products = DataFrame( combinations( list_data[0] ,len(df_columns) ) )
我也在尝试让它动态化 我试图将列变成 dict 然后使用键作为数据的指针,但我不知道如何实现这个逻辑,我对 dict 的经验太浅了
data = dict()
for i in df_columns:
data[i] = df[i].dropna(axis=0)
我阅读了关于 itertools.product 的文章,这就是为什么我制作 dict 也使用 for 循环使用 dict 键进行相同的更改。
我认为我对 dict 的执行让我感到困惑,任何指导
编辑:
我已经开始工作了
temp = []
for i in df_columns:
temp += [data[i]]
final_df = DataFrame(product(*temp), columns=df_columns)
final_df
我想知道是否有更有效的方法来完成相同的结果
谢谢
【问题讨论】:
标签: python combinations product itertools