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

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

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

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

Python

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

pandas

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

Q&A

解決済

1回答

140閲覧

特定の条件に応じて、行の要素を変えたい

onushinosenzo

総合スコア22

Python 3.x

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

Python

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

pandas

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

0グッド

0クリップ

投稿2018/10/03 04:17

編集2018/10/03 04:18

前提・実現したいこと

place len time gap wether going rank cnt
1 大井☆ 1600 1:47.4 4.6 雨 不良 13 13
2 川崎☆ 1500 1:39.9 4.6 雨 不良 12 13
3 大井☆ 1400 1:31.7 3.0 曇 重 16 16
4 大井☆ 1400 1:30.9 2.0 晴 良 8 9
5 函館 1200/芝 1:11.0 1.0 曇 稍重 14 16
6 函館 1200/芝 1:09.4 0.3 晴 良 7 16
7 函館 1200/芝 1:09.5 0.9 曇 良 13 16
8 東京 1400/芝 1:22.0 0.7 小雨 良 8 18
9 新潟 1400/芝 1:22.2 1.2 晴 良 12 16
10 小倉 1200/芝 1:09.7 1.8 曇 良 16 18

中身が上記のようなDataFrameで、['len']に"/芝"が含まれている行の要素をすべてNaNにしたいです。この場合だと5から10の行の要素すべてをNaNにしたいです。

試したこと

python

1df.replace(df.query('len.str.contains("/芝")'),np.nan)

上記のコードでは対象の行に含まれている要素と同じ要素が、対象外の行にも飛び火してNaNになってしまったため、うまくいきませんでした。
place len time gap wether going rank cnt
1 1.0 1600 1:47.4 4.6 雨 不良 NaN 13
2 NaN 1500 1:39.9 4.6 雨 不良 NaN 13
3 1.0 1400 1:31.7 3.0 NaN 重 NaN NaN
4 1.0 1400 1:30.9 2.0 NaN NaN NaN 9
5 NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN NaN NaN NaN
9 NaN NaN NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN NaN NaN

python

1df.query('len.str.contains("芝")').replace(df.query('len.str.contains("/芝")'),np.nan,inplace=True)

上記のコードでは
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrameが出てしまい、うまくいきませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Python

1df.loc[df.len.str.endswith('芝'),'len'] = np.nan

で良いのではないでしょうか

投稿2018/10/03 04:26

magichan

総合スコア15898

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

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

onushinosenzo

2018/10/03 04:35

place len time gap wether going rank cnt 1 1 1600 1:47.4 4.6 雨 不良 13 13 2 0 1500 1:39.9 4.6 雨 不良 12 13 3 1 1400 1:31.7 3.0 曇 重 16 16 4 1 1400 1:30.9 2.0 晴 良 8 9 5 0 NaN 1:11.0 1.0 曇 稍重 14 16 6 0 NaN 1:09.4 0.3 晴 良 7 16 7 0 NaN 1:09.5 0.9 曇 良 13 16 8 0 NaN 1:22.0 0.7 小雨 良 8 18 9 0 NaN 1:22.2 1.2 晴 良 12 16 10 0 NaN 1:09.7 1.8 曇 良 16 18 このようになりました。 イメージとしては下記のようにしたいのです。 place len time gap wether going rank cnt 1 1 1600 1:47.4 4.6 雨 不良 13 13 2 0 1500 1:39.9 4.6 雨 不良 12 13 3 1 1400 1:31.7 3.0 曇 重 16 16 4 1 1400 1:30.9 2.0 晴 良 8 9 5 NaN NaN NaN NaN NaN NaN NaN NaN 6 NaN NaN NaN NaN NaN NaN NaN NaN 7 NaN NaN NaN NaN NaN NaN NaN NaN 8 NaN NaN NaN NaN NaN NaN NaN NaN 9 NaN NaN NaN NaN NaN NaN NaN NaN 10 NaN NaN NaN NaN NaN NaN NaN NaN
magichan

2018/10/03 04:36

であれば df.loc[df.len.str.endswith('芝')] = np.nan ですね
onushinosenzo

2018/10/03 04:39

うまいくいきました。助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問