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

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

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

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

pandas

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

Q&A

解決済

2回答

495閲覧

【Python】DataFrameから抽出した値を特定のNaNを含む行列に整形したい

gorigori123

総合スコア12

Python

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

pandas

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

0グッド

0クリップ

投稿2020/03/16 14:21

編集2020/03/16 14:55

DataFrameからマスクして抽出したDataFrameを、(例えば)1行しか抽出されない場合にも、3×3でNaNで埋めた形で取り出すにはどのようにしたらよいでしょうか。

Python

1 2import numpy as np 3import pandas as pd 4 5df = pd.DataFrame( [ [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3] , [4.1, 4.2, 4.3] , [5.1, 5.2, 5.3] ], columns=['a', 'b', 'c'] ) 6 7df_new=df[df['a']==1.1].head(3) 8 9print(df_new) 10 a b c 110 1.1 1.2 1.3 12 13 14

これを

Python

1print(df_new) 2 3 a b c 40 1.1 1.2 1.3 51 NaN NaN NaN 62 NaN NaN NaN 7

のようにしたいのですがどのようにすればよいでしょうか。
お願いしますカミサマ教えてください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

条件に合致しない要素を他の値に置き換えたい場合は、DataFrame.where() をお使いください。
(defaultで NaN に置き換わります)

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.where.html

Python

1import pandas as pd 2 3df = pd.DataFrame( [ [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3] , [4.1, 4.2, 4.3] , [5.1, 5.2, 5.3] ], columns=['a', 'b', 'c'] ) 4 5df_new = df.where(df['a']==1.1).head(3) 6 7print(df_new) 8# a b c 9#0 1.1 1.2 1.3 10#1 NaN NaN NaN 11#2 NaN NaN NaN

投稿2020/03/16 23:23

編集2020/03/16 23:23
magichan

総合スコア15898

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

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

gorigori123

2020/03/17 14:22

回答ありがとうございます! まさしくな回答ありがとうございます!! 神回答です!!
guest

0

逆の条件で抽出したものにnanをセットするとよいかと思います。

Python

1import pandas as pd 2 3df = pd.DataFrame( [ [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3] ], columns=['a', 'b', 'c'] ) 4df_new = df.copy() 5df_new[df_new['a'] != 1.1] = pd.np.nan 6print(df_new) 7# a b c 8#0 1.1 1.2 1.3 9#1 NaN NaN NaN 10#2 NaN NaN NaN

投稿2020/03/16 14:41

can110

総合スコア38278

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

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

gorigori123

2020/03/16 14:56

ご回答ありがとうございます。 すみません、問題を一般化して簡単にしすぎました。 条件にあうデータのうちhead(3)で3つ選択しますが、条件に合うものが3つ無かった場合にNaNで埋めたい場合にはどのようにすればよいでしょうか。
can110

2020/03/16 15:04

回答コードは条件に合う(行)数には依存しません。 条件に合うものの「もの」が何を指しているのか、 また何(どこ)をNaNで埋めたいのかが不明ですので具体的に質問本文で提示すると 適切な回答が得られるかもしれません。
gorigori123

2020/03/16 15:33

質問本文を修正いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問