2017-12-09 14 views
0

Panda Dataframeに 'str'という列があります。私は数値[0-9] またはリテラル[-Z]を含んでいないことから、すべての行を削除しようとすると、次の文は動作しませんでした :番号がなくリテラルがない行を削除する

data[data['str'].str.contains(r"[a-zA-z0-9]") == True] 

を実行した後、私は列の値を分析しました。 ( "["、 "^")

、それは(必要ではない。この場合にある)の値を削除します:

( "1"、 "のようにそれの値が残ってい2016」、「20160715」)

私を助けることができる人はいますか?

よろしく

答えて

0

あなたはそれがすべてのnull値が含まれている行全体を削除する関数dropnaパンダを使用することができます。 DFはあなたのデータフレーム

+0

迅速な回答ありがとうございます。その中にヌル値はありません。私は "[["、 "\"、 "^"のような文字列を削除したい。 – rilla119

0
import pandas as pd 
data = pd.DataFrame([[']','//','.'],['a2','b2','c2'],['a3','b',']']],columns=['A','B','C']) 
test = data['A']str.match('^[\w\d_-]*$') 
data = data[test] 

出力である

DF = df.dropna()

:あなたは非文字非数文字でOKであれば

A B C 
1 a2 b2 c2 
2 a3 b ] 

、私は最良の方法は、それらの文字の辞書に続いてdata.replaceが続くと思う。

import pandas as pd 
import numpy as np 
df = pd.DataFrame([[']','//','.'],['a!','b2','c2'],['a3','b!',']']],columns=['A','B','C']) 
df 
Output: 
A B C 
0 ] // . 
1 a! b2 c2 
2 a3 b! ] 

remove = {'.':np.nan, '/':np.nan, ']':np.nan} # The format is {'thing to be replaced':'new thing'} 

df['A'] = df['A'].replace(remove) # Checks one column 
df 
Output: 
    A B C 
0 NaN // . 
1 a! b2 c2 
2 a3 b! ] 

df.dropna() 
df 
Output: 
    A B C 
1 a! b2 c2 
2 a3 b! ] 

特定の列は必ず交換してください。 dropna()は、任意のNaN値を持つ列を削除します。

警告として、プレースホルダに "str"などのPythonメソッドを使用しないでください。しかし、おそらくここであなたを焼かないでしょう。

+0

ありがとう!一致の背後にある意味( '^ [\ w \ d _-] * $')は何ですか?特殊文字のみを含む文字列を除外しますか?私の場合、文字\数字と特殊文字の混在が許されるからです。 '\ ABC'のようなものは、そのデータフレームに保存したい。 – rilla119

+0

トリッキー。私は私の答えを編集します –

+0

あなたが除外しなければならない特別な文字を知っているなら、それは素晴らしい解決策です。しかし、私は一般的な解決策を探していました。それにもかかわらず、多くのありがとう! – rilla119

関連する問題