代码之家  ›  专栏  ›  技术社区  ›  Student Ilia Akhmadullin

通过每一组两个数据元素生成行的有效方法是什么?

  •  1
  • Student Ilia Akhmadullin  · 技术社区  · 6 年前

    目标 :从数据中获取对,并创建带有适当行的新标签数据框

    data = [2618926, -1, 2955664, 2978, 2959058, -1, 3038766, 4470, 3044420, -1]
    
    column = ['Date','Value']
    

    我需要从变量“data”创建一个数据帧,并以以下格式显示:

    Date        Value
    2618926     -1
    2955664     2978
    2959058     -1
    2028766     4470
    3044420     -1
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   cs95 abhishek58g    6 年前

    我会用我最喜欢的 zip iter 食谱:

    it = iter(data)
    pd.DataFrame(list(zip(it, it)), columns=column)
    # Or, let pandas exhaust the iterator for you.
    # pd.DataFrame.from_records(zip(it, it), columns=column)
    
          Date  Value
    0  2618926     -1
    1  2955664   2978
    2  2959058     -1
    3  3038766   4470
    4  3044420     -1
    

    zip(it, it) 把每一个备选元素都用拉链拉在一起。


    另一个选择是使用 np.reshape :

    pd.DataFrame(np.reshape(data, (-1, 2)), columns=column)
    
          Date  Value
    0  2618926     -1
    1  2955664   2978
    2  2959058     -1
    3  3038766   4470
    4  3044420     -1
    
        2
  •  3
  •   Patrick Artner    6 年前

    用字典输入df:

    df= pd.DataFrame( {"Date":data[::2], "Value":data[1::2]} )
    

    从0和1索引开始的每2个元素的列表切片数。

    输出:

          Date  Value
    0  2618926     -1
    1  2955664   2978
    2  2959058     -1
    3  3038766   4470
    4  3044420     -1