Pythonの列から単語一致を抽出します

okwaves2024-01-25  192

列の 1 つが次の形式であるデータ フレームがあります。

Mat_Headers_Turbine = df_2['1'].unique().tolist()
print(Mat_Headers_Turbine)

['TURBINE , GAS ', 'TURBINE ', 'TURBINE,STEAM ', 'TURBINE, STEAM ', 'TURBINE,EXPANSION ', 'TURBINE STEAM ', 'STEAM TURBINE ', 'TURATING ', 'PUMPS, RECIPROCATING ', 'BLOWERS ', 'REGENERATOR CYLONE SEPERATOR ', 'MOBILE CRANE ', 'MECHANICAL SEAL ', 'TOOLS - MISCELLANEOUS', 'LADDERS ', 'TRANSDUCER ', 'FLAME SCANNERS AND PARTS:', 'VALVE, CONTROL, GLOBE ']

「TURBINE」に対応する値を抽出するだけです。これは、「ガス/蒸気/空気/エンジン/新しい塔への膨張」です。 いいえ。行数は約 50,000 行です。どうすればこれを行うことができますか?

df_2.loc[df_2['1'].isin([<all_the_options>])] で十分です

– グジェゴシュ・スキビンスキー

2020 年 9 月 3 日 12:09

テキストが 1 つのセル内に [Turbine , Gas] 形式であるため、isin は機能しません。

– サイムカーン

2020 年 9 月 3 日 12:27



------------------------

使用する必要があるのは、次の pandas クエリのみです。

turbine_values = df_2[(df_2['1'].notnull()) & (df_2['1'].str.contains('TURBINE'))]['1'].apply(lambda turbine_string: turbine_string.split(',')[-1].strip())

これにより、目的の列に「TURBINE」を含むすべての行が表示され、次に対応する値が表示されます。

4

ご返信ありがとうございます。 ` タービン値 = df_2[df_2['マット ヘッダー'].str.contains('TURBINE')]['マット ヘッダー'].apply(lambda タービン_文字列: タービン_文字列.split(',')[-1].strip()) print(df_2[turbine_values]) ` エラー ValueError が発生します: NA / NaN 値を含む非ブール配列ではマスクできません

– サイムカーン

2020 年 9 月 3 日 12:40

1

null ではない行を取得するようにクエリを変更しました

– エドゥアルド・コルトリ

2020 年 9 月 3 日 13:05

クエリは機能します **GAS ;メーカー: M/S 日立;モデル: H-25 ** ストリッピング「タービン」でも私に必要なのは「GAS」だけです残りを削除したい....

– サイムカーン

2020 年 9 月 3 日 13:53

もしあなたが「GAS」を除いて、turbine_values で別のクエリを作成します。このように、turbine_values = Turbine_values[turbine_values.contains('GAS')]

– エドゥアルド・コルトリ

2020 年 9 月 3 日 14:06

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。