为DataFram中的元素创建组合集

2024-06-16 13:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从一个数据帧创建一个“实验设计”矩阵,它表示每个元素的可能选择

我想为数据帧中每个元素的独特组合创建一个列,它将表示一个实验集

约束:元素的大小不尽相同

输入:

index   Column1 Column2 Column3
 a        a1        
 b        b1      b2       b3
 c        c1      c2    
 d        d1        

期望输出: 索引列1列2列3列4列5列6

a   a1  a1  a1  a1  a1  a1
b   b1  b2  b3  b1  b2  b3
c   c1  c1  c1  c2  c2  c2
d   d1  d1  d1  d1  d1  d1

我看过压缩列表,但希望找到一个优雅的方式


Tags: 数据元素indexa1矩阵b2b1b3
1条回答
网友
1楼 · 发布于 2024-06-16 13:19:35

可能是一些itertools操作?:-)

idx = ['a','b','c','d']
df = pd.DataFrame([['a1',None,None],['b1','b2','b3'],['c1','c2',None],['d1',None,None]], 
                  index=idx,
                  columns=['Column1','Column2','Column3'])

enter image description here

NUM_OF_COLUMNS = 6
result = []

for r in df.values:
    #Filter None or other types of "emtpy" values you have:
    filtered = [x for x in r if x is not None]
    # Creat a row by repeating the elements:
    rep_list = list(islice(cycle(filtered), NUM_OF_COLUMNS))
    result.append(rep_list)

res_df = pd.DataFrame(result,
                      index=idx,
                      columns=['Column'+str(i) for i in range(1, NUM_OF_COLUMNS+1)])

enter image description here

相关问题 更多 >