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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

Q&A

解決済

2回答

1572閲覧

条件が複雑なデータ抽出の結果がエクセルの結果と異なる原因として考えられること

onosan

総合スコア62

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

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

0グッド

0クリップ

投稿2020/06/03 00:20

python初心者です。
Pythonでやや複雑な条件抽出を試みております。

#案内2020/05/26 CYM-P
det.loc[((det['Date'] >= d0417) & (det['Date'] < d0526) & (det["Detail品目"]=='CYM-P') & (det['Detail内容コード'] == "820"))|((det["Detail品目"]=='CYM-P') & (det["cym_memo1"]=='Match') & (det['Date'] < d0526)), "案内2020/05/26"] = 1

これは、
det['Date'](datetime型)が2020/4/17以降 2020/5/26未満
かつ det["Detail品目"](string型)がCYM-P かつ det'Detail内容コード'が820

あるいは

det["Detail品目"](string型)がCYM-P かつ、det["cym_memo1"](string型)が Match
かつ det['Date'](datetime型)が2020/5/26未満

を条件とした時に、新しいカラム "案内2020/05/26" を作成し、1を立てるというものなのですが、

エラーが出ないのですが、エクセルですと抽出される1が立つものが、pythonだと抽出されません。
付加情報として
①同じような検索を1つ前でにやっていますが、こちらは動いています
②条件が複雑すぎるのでしょうか
③エラーは出ませんが、以下のようなワーニングがでます。

FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
res_values = method(rvalues)

④条件指定の文字列に間違いなどはありません。

こちら1が立たない理由としてどのようなことが考えられるでしょうか。
何卒、ご教示いただけますと幸いです。

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

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

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

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

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

bsdfan

2020/06/03 02:04

FutureWarningの内容としては、数値のarrayと文字列の比較をしたときとかに出るやつなので、あやしそうなのは、det['Detail内容コード']が文字列ではなくて、数値が入っているとかでしょうか。 det['Detail内容コード']のdtypeを確認できますか。
onosan

2020/06/03 10:16

ご連絡がおくれてすみません。ご明察でした。det['Detail内容コード']は文字列ではなく、intでした。エクセルで文字列として扱っていたので、そこの観察が足りておりませんでした。お恥ずかしい限りです。ご指摘、ありがとうございました。ベストアンサーにしたいと思うのですが、すみません。やり方がわかりません。大変参考になりました。
guest

回答2

0

それぞれの条件分を単独で書いて、どこがどう違うかを確認しよう。

それをやってから質問しても遅くはないと思いますよ

投稿2020/06/03 01:41

y_waiwai

総合スコア88042

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

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

onosan

2020/06/03 11:48

ありがとうございます。修正の方から指摘されたように、det['Detail内容コード']の型が文字列ではなく、int型だったので不整合が生じておりました。解決いたしました。ありがとうございます。
guest

0

ベストアンサー

FutureWarningの内容としては、数値のarrayと文字列の比較をしたときとかに出るやつなので、あやしそうなのは、det['Detail内容コード']が文字列ではなくて、数値が入っているとかでしょうか。
det['Detail内容コード']のdtypeを確認してみてください。

投稿2020/06/03 12:49

編集2020/06/03 12:50
bsdfan

総合スコア4794

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

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

bsdfan

2020/06/03 12:51

修正依頼にコメントした内容ですが、それで解決したようなのでこちらにも書いておきます。
onosan

2020/06/04 10:22

warningから洞察するスキルに感服しました。ご明察でした。大変助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問