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

2024-02-20

我有一个包含三列的 Pandas Dataframe:行、列、值。行值都是低于某些的整数N,并且列值都是低于某个值的整数M。这些值都是正整数。

如何有效地创建数据框N行和M列,带有 at 索引i, j价值val if (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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从(行、列、值)数据创建 Pandas DataFrame 的相关文章

随机推荐