當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。