当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark DataFrame.transpose用法及代码示例


本文简要介绍 pyspark.pandas.DataFrame.transpose 的用法。

用法:

DataFrame.transpose() → pyspark.pandas.frame.DataFrame

转置索引和列。

通过将行写为列来反映 DataFrame 的主对角线,反之亦然。属性 T 是方法 transpose() 的访问器。

注意

由于大数据的性质,这种方法基于昂贵的操作。在内部,它需要为每个值生成每一行,然后分组两次——这是一个巨大的操作。为防止误用,此方法具有“compute.max_rows”默认输入长度限制,并引发 ValueError。

>>> from pyspark.pandas.config import option_context
>>> with option_context('compute.max_rows', 1000):  
...     ps.DataFrame({'a': range(1001)}).transpose()
Traceback (most recent call last):
  ...
ValueError: Current DataFrame has more then the given limit 1000 rows.
Please set 'compute.max_rows' by using 'pyspark.pandas.config.set_option'
to retrieve to retrieve more than 1000 rows. Note that, before changing the
'compute.max_rows', this operation is considerably expensive.

返回

DataFrame

转置的 DataFrame。

注意

转置具有混合 dtype 的 DataFrame 将导致具有强制 dtype 的同质 DataFrame。例如,如果 int 和 float 必须放在同一列中,则它变为 float。如果类型强制是不可能的,它会失败。

另外,请注意 index 中的值应该是唯一的,因为它们成为唯一的列名。

此外,如果使用 Spark 2.3,则类型应始终完全相同。

例子

Square DataFrame 具有同质 dtype

>>> d1 = {'col1': [1, 2], 'col2': [3, 4]}
>>> df1 = ps.DataFrame(data=d1, columns=['col1', 'col2'])
>>> df1
   col1  col2
0     1     3
1     2     4
>>> df1_transposed = df1.T.sort_index()  
>>> df1_transposed  
      0  1
col1  1  2
col2  3  4

当原始 DataFrame 中的 dtype 是同质的时,我们会得到具有相同 dtype 的转置DataFrame:

>>> df1.dtypes
col1    int64
col2    int64
dtype: object
>>> df1_transposed.dtypes  
0    int64
1    int64
dtype: object

具有混合数据类型的非正方形DataFrame

>>> d2 = {'score': [9.5, 8],
...       'kids': [0, 0],
...       'age': [12, 22]}
>>> df2 = ps.DataFrame(data=d2, columns=['score', 'kids', 'age'])
>>> df2
   score  kids  age
0    9.5     0   12
1    8.0     0   22
>>> df2_transposed = df2.T.sort_index()  
>>> df2_transposed  
          0     1
age    12.0  22.0
kids    0.0   0.0
score   9.5   8.0

当 DataFrame 混合了 dtype 时,我们得到一个带有强制 dtype 的转置 DataFrame:

>>> df2.dtypes
score    float64
kids       int64
age        int64
dtype: object
>>> df2_transposed.dtypes  
0    float64
1    float64
dtype: object

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.DataFrame.transpose。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。