使用生成器推导式创建数据框

Using a generator comprehension to create data frames

如果我错了请纠正我,但是生成器理解会生成一个生成器对象。如果是这样,那么为什么 df1、df2、df3 和 df4 的内容是实际数据帧而不是生成器对象?

In  [1]: import pandas as pd       
nrows, ncols = 10, 10       
rng = np.random.RandomState(42)       
df1, df2, df3, df4 = (pd.DataFrame(rng.rand(nrows, ncols)) for i in range(4))

In  [2]: df1
Out [2]:
          0         1         2  ...         7         8         9
0  0.103124  0.902553  0.505252  ...  0.010838  0.905382  0.091287
1  0.319314  0.950062  0.950607  ...  0.328665  0.672518  0.752375
2  0.791579  0.789618  0.091206  ...  0.887704  0.350915  0.117067
3  0.142992  0.761511  0.618218  ...  0.821860  0.706242  0.081349
4  0.084838  0.986640  0.374271  ...  0.753378  0.376260  0.083501
5  0.777147  0.558404  0.424222  ...  0.468661  0.056303  0.118818
6  0.117526  0.649210  0.746045  ...  0.868599  0.223596  0.963223
7  0.012154  0.969879  0.043160  ...  0.553854  0.969303  0.523098
8  0.629399  0.695749  0.454541  ...  0.280963  0.950411  0.890264
9  0.455657  0.620133  0.277381  ...  0.077735  0.974395  0.986211

解包一个生成器对象(通过执行 a, b, c, etc. = (genexp))导致它生成它的所有项目,然后为它解包到的每个变量提供一个项目。在您的情况下,每个变量(df1df2df3df4)从生成器对象中获得一个 DataFrame,因为您将生成器解压缩到那些那些变量。