質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1023閲覧

(pandas)条件に合致した列の一部のみ、違う列を違うdfに取得する方法

tanak.aaaaa

総合スコア6

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/07/25 05:24

編集2021/07/25 13:52

下記の様なコードでデータを取得する場合、取得するデータに条件を加える方法をお教えいただきたく思います。

df_new = df[df["e"]<df["e"].shift(-1)]

取得するデータへの条件は下記の物にしたいと考えております
0. 条件の合致したデータのある行の"a", "e"列にストアされているデータ
0. 条件の合致したデータのある行から2行上の"a", "e"列データ
0. 1.の条件で取得した値を初めて下回った"e"列にストアされたデータ、また同じ行の"a"列に収納された値

下記のリストですとちょうどrow4が上記のコードに合致しているので例として使用いたしますと、上記記載の条件1.~3.でそれぞれ取得する値が
a b c d e
1 2021/06/15 110.06 110.16 109.96 100.07
2 2021/06/14 109.63 110.09 109.58 110.06
3 2021/06/11 109.32 109.83 109.30 109.65
4 2021/06/10 109.61 109.79 109.29 109.31
5 2021/06/09 109.48 109.65 109.21 109.61
6 2021/06/08 109.24 109.55 109.18 109.49
7 2021/06/07 109.50 109.63 109.17 109.24
8 2021/06/04 110.28 110.33 109.35 109.49
9 2021/06/03 109.54 110.32 109.52 110.28

  1. 取得データはrow4の"2021/6/10", "109.31"
  2. 取得データはrow2の"2021/6/14", "110.06"
  3. 取得データはrow1の"2021/6/15", "100.07"

という風にしたいと思っています。
また取得データ可能でしたら取得するデータを並び替える方法がありましたらお教えいただけますでしょうか?

質問にて下記の明確ではない点をご指摘いただきました。

最終的に欲しいのは文字列でしょうか?

こちらも大変分かりずらい記載になってしまいましたが要するに下記の様な結果が得られればと思っております。
イメージ説明

条件の合致した列の"a", "e"行にストアされているデータ
「行」は列の間違いでしょうか?

私の勘違いで混乱を招いてしまいました、仰る通り行ではなく列です。修正いたします。

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

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

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

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

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

meg_

2021/07/25 05:47

> 条件の合致した列の"a", "e"行にストアされているデータ 「行」は列の間違いでしょうか?
meg_

2021/07/25 05:49

> 取得データはrow4の"2021/6/10", "109.31" > 取得データはrow2の"2021/6/14", "110.06" > 取得データはrow1の"2021/6/15", "100.07" 最終的に欲しいのは文字列でしょうか?
tanak.aaaaa

2021/07/25 06:14

不明点へのご指摘ありがとうございます。 質問本文内ではございますがご指摘いただいた所の修正、追記をいたしました。
meg_

2021/07/25 07:14

> 1.取得データはrow4の"2021/6/10", "109.31" 条件1に合致するデータは「2021/6/10」のデータのみですか?2021/6/15のデータが合致しないのは何故ですか?
ppaul

2021/07/25 12:32

「下記のリスト」のデータを画像ではなくテキストで載せてください。
tanak.aaaaa

2021/07/25 13:45

meg_さん、ご質問ありがとございます。 仰る通りリスト内の他の物で合致するものはあると思います。質問本文では多くの例を載せるとわかりにくくなってしまう恐れがあると思い一番わかりやすいと思われたrow4番の物を選んだにすぎません。というのも実は条件式は私の中で重要視しておらず、つまりは条件に合致した値があった行から個別にデータを、条件に合致した値があった行からx行下の行に記載されているデータを、条件に合致した値があった行から下方向に見ていき合致する初めての値を、それぞれ新しいdfの行に一列に収納したいという考えで質問させていただきました。使用する条件が提示してあるほうが分かりやすいかと思い書いた条件でしたが、逆に混乱を招いているようですので今後は条件を書くこと自体を見直しつつ質問させていただくようにいたします。 ppaulさん、ご指摘ありがとうございます。 画像をテキストに変更いたします。
meg_

2021/07/25 14:09 編集

> 逆に混乱を招いているようですので今後は条件を書くこと自体を見直しつつ質問させていただくようにいたします。 具体的な条件を提示いただかないと回答のしようがないと思います。今回であれば複数データの処理について書いてくれれば良いだけです。 > というのも実は条件式は私の中で重要視しておらず、 抽出条件によってコードも変わります。どんな条件でも同じコードというわけにはいかないのでは?
guest

回答1

0

ベストアンサー

抽出条件が不明瞭なところもありますが、私なりに解釈し条件2について回答します。
(条件3については条件2において複数のデータが抽出された場合の処理について考慮されていないと考えられるため回答できません。)

Python

1df2 = df.loc[df_new.index[df_new.index - 2 >= 0] - 2,:] 2print(df2) 3# a b c d e 4#1 2021/6/14 109.63 110.09 109.58 110.06 5#4 2021/6/9 109.48 109.65 109.21 109.61 6#5 2021/6/8 109.24 109.55 109.18 109.49

投稿2021/07/25 07:36

meg_

総合スコア10760

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問