teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明追加

2021/02/09 08:05

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -3,4 +3,47 @@
3
3
  ```python
4
4
  df2 = df[1:2]
5
5
  ```
6
- でコピーできていますが、それではできないのでしょうか。
6
+ でコピーできていますが、それではできないのでしょうか。
7
+ df2がDataFrameであることは、以下の方法で確認できます。
8
+
9
+ ```python
10
+ >>> df2 = df[1:2]
11
+ >>> print(type(df2))
12
+ <class 'pandas.core.frame.DataFrame'>
13
+ >>> print(df2)
14
+ 列1 列2
15
+ gyo2 d3 d4
16
+ ```
17
+
18
+ また、df.loc["gyo2"].copyはDataFrameではなくメソッドです。
19
+ ```python
20
+ >>> print(df.loc["gyo2"].copy)
21
+ <bound method NDFrame.copy of 列1 d3
22
+ 列2 d4
23
+ Name: gyo2, dtype: object>
24
+ >>> print(type(df.loc["gyo2"].copy))
25
+ <class 'method'>
26
+ ```
27
+ df.loc["gyo2"]はDataFrameではなく、Seriesになります。
28
+ ```python
29
+ >>> print(df.loc["gyo2"])
30
+ 列1 d3
31
+ 列2 d4
32
+ Name: gyo2, dtype: object
33
+ >>> print(type(df.loc["gyo2"]))
34
+ <class 'pandas.core.series.Series'>
35
+ ```
36
+ これをDataFrameに変換することはできますが、求めるものとは少し違います。
37
+ ```python
38
+ >>> print(pd.DataFrame(df.loc["gyo2"]))
39
+ gyo2
40
+ 列1 d3
41
+ 列2 d4
42
+ ```
43
+ 縦横が逆になっていますので、逆転してみましょう。
44
+ ```python
45
+ >>> print(pd.DataFrame(df.loc["gyo2"]).T)
46
+ 列1 列2
47
+ gyo2 d3 d4
48
+ ```
49
+ これでも出来ましたが、df2 = df[1:2]の方が簡単ですね。