2016-12-16 15 views
2

Excelファイルを読み込んでフィルタリングした後、このように見えるpandasデータフレームになります。filter pandas列のみを含む文字列の場合

Col1 Col2 
afaf abc 1 
1512   
asda cdd 2 
adsd   

は私が

Col1 Col2 
afaf abc1 
asda cdd2 

で終わるしようとしている私が置き換えられますdf['Col2'].replace('',np.nan,inplace=True)、その後dropnaを行うには何もしてみました、だから私は、column2の複数のを持っているので、それが交換することはできませんと思いますそれらの空の行のスペース。

Col2文字列に空白を入れておく必要があるため、私はstripを使用できないと言いました。

アイデア?

+0

だから、基本的には何もでcol2にありません行またはそのような何かをフィルタリング? –

+0

ええ、それは期待される結果になります:) –

答えて

4

私はstripによっていくつかの可能な空白を削除してlenによってlength0でないかどうかを確認するためにあなたが条件とboolean indexingを使用することができると思う:

print (df[df.Col2.str.strip().str.len() != 0]) 
    Col1 Col2 
0 afaf abc 1 
2 asda cdd 2 

なし空白文字場合:

df[df.Col2.str.len() != 0] 
2

することができますパンダstr.strip()機能を使用してカラムをはぎ取ります。すべての空白を削除する必要があります。

それはそうまたあなたの追加の空白制約の下で働き、あなたが

df.iloc[df.pipe(lambda x:x['Col2'].str.strip().replace('',np.nan)).dropna().index] 

としてこの後者の、更新のソリューションを非ナン行を受け取ることができpipeを使用して、この

df['Col2'].str.strip().replace('',np.nan,inplace=True) 

ようになります。ただし、その制約が送信される前にパイプを使用していました。

今、 Jezraelのようなソリューションが、

df[df['Col2'].str.strip() !=''] 

として処方され、私が思うに、これは本当に小さなデータフレームの上にいくつかのベンチマークを行っLEN関数には

を使用するよりも少し明確です。 PirSquaredソリューションが最も速く、次にJezraelが続き、その後に私のソリューションを ''と比較しています。最後の場所は配管の変形です。

2

使用str.match

df[~df.Col2.str.match(r'^\s*$')] 

enter image description here

関連する問題