🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

287閲覧

python:DataFrameで1行だけ抽出したい。

python_2019

総合スコア68

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/10 05:18

df_X = pd.read_excel('target+notarget_test.xlsx',sheet_name='説明変数') df = pd.DataFrame(df_X) print(df)      a-1 a-2 a-3 a-4 a-5 a-6 \ 0 10.071290 11.514570 11.760820 10.884810 9.205902 7.206620 1 -1.149470 0.025250 1.102695 1.995382 2.665088 3.126918 2 2.846096 3.023290 2.520598 1.437185 -0.031236 -1.622204 3 9.815763 8.734358 6.921487 4.678422 2.367900 0.341238 4 -7.742911 -5.982857 -4.153789 -2.562087 -1.472580 -1.052752 5 -0.181525 -2.310829 -4.294180 -5.868561 -6.805499 -6.962085 6 -0.132895 0.681134 0.425554 -0.873045 -2.983993 -5.518749

上記から、以下1行目のデータだけを抜き出したいのですが、どうすればよいでしょうか?

   10.071290 11.514570 11.760820 10.884810 9.205902 7.206620

次のようにしても、うまくいきません。

お詳しい方、ご指導をお願いいたします。

x=df.iloc[0:0,0:6] #[行開始:終,列開始:終]で指定する print(x) y=df.iloc[0:1,0:6] #[行開始:終,列開始:終]で指定する print(y) Empty DataFrame Columns: [a-1, a-2, a-3, a-4, a-5, a-6] Index: []

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetsunosuke

2019/12/10 05:27

「うまくいかない」がちょっとわかりにくいですが、 出力をそのようにしたいのですかね? たとえば z = df.iloc[0:1,0:6] であれば、DataFrameなので、valuesを取ればndarrayになります。 同様に、df.iloc[1] でも、Seriesになるので、valuesを取ればndarrayになります。 あとは出力のフォーマットを整えればいいと思ってます。
python_2019

2019/12/10 05:41

ご連絡ありがとうございます。 はい、出力を上記の通りにしたいと考えております。 z = df.iloc[0:1,0:6] と修正しましたら、なぜか、以下のようになりました。 a-1 a-2 a-3 a-4 a-5 a-6 0 10.07129 11.51457 11.76082 10.88481 9.205902 7.20662 これから、10.07129 11.51457 11.76082 10.88481 9.205902 7.20662 だけを抽出にはどうすればよいでしょうか?
guest

回答2

0

list(df.iloc[0]) ではどうですか?

投稿2019/12/10 05:24

編集2019/12/10 05:26
shiracamus

総合スコア5406

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

python_2019

2019/12/10 05:47

ご連絡ありがとうございます。 list(df.iloc[0]) を実行しましたら、以下のようになりました。 [10.07129, 11.51457, 11.76082, 10.88481, 9.205902, 7.20662, これを、 10.07129 11.51457 11.76082 10.88481 9.205902 7.20662 の形式に変換するにはどうすればよいでしょうか?
shiracamus

2019/12/10 05:51 編集

そんな形式はないですけど、表示したいということなら、 print(*df.iloc[0]) で表示できます。アスタリスク(*) を忘れずに。
python_2019

2019/12/10 05:58

ご連絡ありがとうございます。 そのような形式はないのですね。 了解いたしました。 ちなみに、list(df.iloc[0])  の場合は「0行」を抽出する場合ですが、 例えば、「10行~20行を抽出」する場合はどうすればよろしいでしょうか? よろしくお願いいたします。
shiracamus

2019/12/10 06:12

print(*df[10:21].values) とかやってみるとどうですか? 表示したいのか、pandasデータのままにしたいのか、listにしたいのかわからないですが。
python_2019

2019/12/10 08:06

ご連絡ありがとうございます。 一度、試してみたいと思います。
guest

0

ベストアンサー

yの方で上手く行きませんか?

python

1y=df.iloc[0:1,0:6] #[行開始:終,列開始:終]で指定する 2print(y)

これだけでも大丈夫なはずです。

python

1y=df.iloc[0, 0:6] 2print(y)

投稿2019/12/10 05:24

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

python_2019

2019/12/10 05:45

ご連絡ありがとうございまず。 y=df.iloc[0, 0:6] print(y) を実行しましたら、以下のようになりました。 a-1 10.071290 a-2 11.514570 a-3 11.760820 a-4 10.884810 a-5 9.205902 a-6 7.206620 Name: 0, dtype: float64 以下のように出力するにはどうすればよいでしょうか? 10.07129 11.51457 11.76082 10.88481 9.205902 7.20662
hayataka2049

2019/12/10 06:26 編集

それはSeriesオブジェクトを印字した結果で、とりあえず結果としては問題ないかと思います。そのように出力しないといけない理由は特にないかと思いますが、どうしても必要なら " ".join(map(str, y)) で良いのでは(多少違う結果になるかもしれませんが)。
python_2019

2019/12/10 06:13

ご連絡ありがとうございます。 結果として問題ないということですね。 承知いたしました。 ...実は、質問させていただいた意図は、折れ線グラフを描写させたいということからです。 横軸(x軸)= a-1 a-2 a-3 a-4 a-5 a-6 縦軸(y軸)= 10.071290 11.514570 11.760820 10.884810 9.205902 7.206620 <横軸> x=df.iloc[0:0,0:6] #[行開始:終,列開始:終]で指定する print(x) Empty DataFrame Columns: [a-1, a-2, a-3, a-4, a-5, a-6] Index: [] <縦軸> y=df.iloc[0, 0:6] これで、plt.plot(x,y) に投入してもエラーになってしまいます。 ValueError: x and y must have same first dimension, but have shapes (0, 6) and (6,) 今回の質問趣旨と異なりますが、hayataka2049様のご知見を頂戴できればありがたいです。 何度も申し訳ございません。 どうぞよろしくお願いいたします。
hayataka2049

2019/12/10 06:28

やりたいことは plt.plot(df.columns[0:6], df.iloc[0, 0:6]) でしょうか?
python_2019

2019/12/10 06:45

お教え頂きました、 plt.plot(df.columns[0:6], df.iloc[0, 0:6]) これで、グラフが描写できました。 大変助かりました。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問