【问题标题】:Create Pandas DataFrame from (row, column, value) data从(行、列、值)数据创建 Pandas DataFrame
【发布时间】:2017-05-24 23:03:29
【问题描述】:

我有一个包含三列的 Pandas 数据框:行、列、值。行值都是N以下的整数,列值都是M以下的整数。这些值都是正整数。

如何有效地创建具有N 行和M 列的数据框,如果(i, j , val) 是我原始数据框中的一行,则在索引i, j 处具有值val,以及一些默认值(@ 987654328@) 否则?此外,是否可以立即创建一个 sparse Dataframe,因为数据已经非常大了,但 N*M 仍然是我数据大小的 10 倍左右?

【问题讨论】:

    标签: python pandas sparse-matrix


    【解决方案1】:

    NumPy 解决方案适合这里的性能 -

    a = df.values
    m,n = a[:,:2].max(0)+1
    out = np.zeros((m,n),dtype=a.dtype)
    out[a[:,0], a[:,1]] = a[:,2]
    df_out = pd.DataFrame(out)
    

    示例运行 -

    In [58]: df
    Out[58]: 
        row  col  val
    0     7    1   30
    1     3    3    0
    2     4    8   30
    3     5    8   18
    4     1    3    6
    5     1    6   48
    6     0    2    6
    7     4    7    6
    8     5    0   48
    9     8    1   48
    10    3    2   12
    11    6    8   18
    
    In [59]: df_out
    Out[59]: 
        0   1   2  3  4  5   6  7   8
    0   0   0   6  0  0  0   0  0   0
    1   0   0   0  6  0  0  48  0   0
    2   0   0   0  0  0  0   0  0   0
    3   0   0  12  0  0  0   0  0   0
    4   0   0   0  0  0  0   0  6  30
    5  48   0   0  0  0  0   0  0  18
    6   0   0   0  0  0  0   0  0  18
    7   0  30   0  0  0  0   0  0   0
    8   0  48   0  0  0  0   0  0   0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-25
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 2015-03-09
      • 1970-01-01
      • 2021-11-17
      相关资源
      最近更新 更多