【问题标题】:Create combinations sets for elements in a DataFrame为 DataFrame 中的元素创建组合集
【发布时间】:2019-11-05 13:35:24
【问题描述】:

我正在从代表每个元素的可能选择的 DataFrame 创建一个“实验设计”矩阵。

我想为 DataFrame 中的每个唯一元素组合创建一个列,这将代表一个实验集。

约束:元素大小不完全相同。

输入:

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

期望的输出: index Column1 Column2 Column3 Column4 Column5 Column6

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

我查看了压缩列表,但希望找到一种优雅的方式。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    也许是一些 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'])
    

    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)])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-13
      • 1970-01-01
      • 2017-01-30
      • 2023-01-28
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多