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

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

ただいまの
回答率

90.50%

  • Python 3.x

    6402questions

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

  • pandas

    584questions

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

文字列, 数字, NaNが混在したデータフレーム(object型)から文字列や数字だけを抽出したい

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 156

mini1988

score 27

 困っていること

dataframe全体がobjectになっていて、各カラムには”見た目”として「文字列+NaN」、「数字+NaN」が存在しています。

このdataframeに対して、カラムが「文字列+NaN」の場合には、NaNを削除して「文字列」だけのリストを生成し、カラムが「数字+NaN」であればNaNを削除して「数字」だけをfloat型でnumpy arrayにしたいと考えています。

ただ、そもそも、各カラムが「文字列+NaN」なのか、それとも「数字+NaN」なのか、区別する方法が思いつきません。

dtype()でやるのかと思うのですが、dataframe全体に適用するとエラーが出ますし、、、解決できずに困っています。

どなたかご教示願えないでしょうか?お手数ですがよろしくお願いします。

 Dataframeの中身

    A列    B列    C列    D列
0    T26-2    0.1    NaN    10
1    T13126-3    0.1    NaN    5
2    T93126    0.1    NaN    NaN
3    T1126-5    15    JUNC    10
4    T1326    0.1    MUI    15
5    NaN    0.1    NaN    10
6    T3126    0.8    NaN    NaN
7    T17726    0.1    X    10.4
8    T1326    0.1    NaN    5.3
9    T1312    0.001    W    5.2
10    T112987    0.1    NaN    NaN
11    X1126    0.1    NaN    7
12    NaN    NaN    JRF    8
13    TH1075-1    0.1    NaN    5
14    T14075-2    0.1    NaN    1.6
15    T1075-3    0.1    KIL    5.1
16    Z0075    0.02    NaN    11.7
17    T14075-5    0.1    MWR    13
18    NaN    0.1    NaN    NaN
19    T14075-5    0.8    NaN    13
20    T14075-6    0.1    NaN    0.8
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

とりあえずドロップしました。

import numpy as np
import pandas as pd

from io import StringIO

s = '''    A列    B列    C列    D列
0    T26-2    0.1    NaN    10
1    T13126-3    0.1    NaN    5
2    T93126    0.1    NaN    NaN
3    T1126-5    15    JUNC    10
4    T1326    0.1    MUI    15
5    NaN    0.1    NaN    10
6    T3126    0.8    NaN    NaN
7    T17726    0.1    X    10.4
8    T1326    0.1    NaN    5.3
9    T1312    0.001    W    5.2
10    T112987    0.1    NaN    NaN
11    X1126    0.1    NaN    7
12    NaN    NaN    JRF    8
13    TH1075-1    0.1    NaN    5
14    T14075-2    0.1    NaN    1.6
15    T1075-3    0.1    KIL    5.1
16    Z0075    0.02    NaN    11.7
17    T14075-5    0.1    MWR    13
18    NaN    0.1    NaN    NaN
19    T14075-5    0.8    NaN    13
20    T14075-6    0.1    NaN    0.8'''

ss = StringIO(s)
df = pd.read_csv(ss, sep='\s+', )

for col in df.columns:
  arr = df[col].dropna().values
  print(arr)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    2つの列を統合したい

    以下のようなdata内のA列とB列をC列のような統合した列を追加する方法をご教授願いたいです。 A列         0 NaN 1 201202 2 NaN

  • 解決済

    Pythonで特定のカラムがnullの行を削除する

    前提・実現したいこと 特定のカラムがnullの行を削除する方法を模索しています。 例えば、dfのA列にnullのある2行だけ削除したい、のような場合です。 dfはpandas

  • 解決済

    pandas groupby での 条件抽出の結果について

    前提・実現したいこと Python の pandas groupbyにてデータの集計方法の質問です。groupby でグループ内のある条件を満たす最小値が欲しいです。その際に、条

  • 解決済

    pandas(Python)で範囲を指定して和を求める

    PythonのPandasのデータフレームで、以下のような計算処理をしたいと考えています。 B2だったら A0+A1+A2 のように、3行分の値を足し合わせてB列に代入するためには

  • 解決済

    小数点の数値を条件としたデータ抽出について

    下記のようなデータフレーム:dfから少数点のみに条件をあてて データを抽出する方法をご教示頂けると助かります。 a b c 1.50 1.59 1.489 1

  • 解決済

    python(pandas) 要素の数に応じた列追加

    以下のようなデータフレームにて、「記事種別ID」に、数値が2つ以上あります。 これらの数値を、列ごとに1つづつ分けるようにしたいのですが、イメージがつかないため 教えていただけると

  • 受付中

    エクセルのvlookup的なことをpythonでやりたい

    pythonで2つのデータを組み合わせたデータを作成するプログラムを作りたいと考えています。 具体的には、共通の列名を持たない2つのデータフレームdf1,df2があり、実行後の

  • 解決済

    毎日のデータに隔日のデータを結合する

    現在の商品販売データの解析を行っています。 以下の2つのデータを所持しています。 日付(YYYY/MM/dd) 月 商品コード 売上 2017/01/01 1

同じタグがついた質問を見る

  • Python 3.x

    6402questions

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

  • pandas

    584questions

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