从(行、列、值)数据创建 Pandas DataFrame

Create Pandas DataFrame from (row, column, value) data

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

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

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