Pythonのオブジェクトは属性を持ちます。
属性にアクセスするためには、"."つまりドットを使います。
属性のうちで呼び出し可能なもののうちの一部はmethodと呼ばれます。
methodは操作を定義したものだと認識しています、という言い方に合わせるならば、method以外の属性はデータを表しているということになります。
少し複雑になるのですが、メソッドではないけれども関数を呼び出すためのpropertyという機能があります。これは、データに見えるものにアクセスしたとき、別の処理が呼び出されるというものです。
propertyの使い方は
class property
をご覧ください。
ここまではpandas特有ではなく、Pythonの機能の一般論です。
Dateframe.Tはpropertyです。
Dataframeというクラスの定義の中で、関係のあるところだけを以下に引用します。
python
1class DataFrame(NDFrame):
2 def transpose(self, *args, copy: bool = False) -> "DataFrame":
3 nv.validate_transpose(args, dict())
4 # construct the args
5
6 dtypes = list(self.dtypes)
7 if self._is_homogeneous_type and dtypes and is_extension_array_dtype(dtypes[0]):
8 # We have EAs with the same dtype. We can preserve that dtype in transpose.
9 dtype = dtypes[0]
10 arr_type = dtype.construct_array_type()
11 values = self.values
12
13 new_values = [arr_type._from_sequence(row, dtype=dtype) for row in values]
14 result = self._constructor(
15 dict(zip(self.index, new_values)), index=self.columns
16 )
17
18 else:
19 new_values = self.values.T
20 if copy:
21 new_values = new_values.copy()
22 result = self._constructor(
23 new_values, index=self.columns, columns=self.index
24 )
25
26 return result.__finalize__(self)
27
28 T = property(transpose)
このように定義されているので、.Tを実行すると引数無しのtransposeが呼び出されます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/18 11:04