2016-06-22 1 views
1

大きなデータファイルがあり、特定のキーワードを持つ行を削除する必要があります。ここで特定のキーワードのcsvファイルを削除する

は、私が使用しているファイルの例を次に示します。

User Name  DN 
MB31212  CN=MB31212,CN=Users,DC=prod,DC=trovp,DC=net 
MB23423  CN=MB23423 ,OU=Generic Mailbox,DC=prod,DC=trovp,DC=net 
MB23424  CN=MB23424 ,CN=Users,DC=prod,DC=trovp,DC=net 
MB23423  CN=MB23423,OU=DNA,DC=prod,DC=trovp,DC=net 
MB23234  CN=MB23234 ,OU=DNA,DC=prod,DC=trovp,DC=net 

これは私がファイルをインポートする方法です:

import pandas as pd 
df = pd.read_csv('sample.csv', sep=',', encoding='latin1') 

どのように

  1. は、そのすべての行を削除することができますたとえばDN列に「OU = DNA」が含まれていますか?
  2. 列内の残りのデータを削除せずに、DN列の最初の属性 'CN = x'を削除するにはどうすればよいですか。
私が含まれている「OUは= DNA」は削除され、2行で、以下掲載されているもののようなものを取得したいと思い

「CN = x」のすべての行から削除:

User Name  DN 
MB31212  CN=Users,DC=prod,DC=trovp,DC=net 
MB23423  OU=Generic Mailbox,DC=prod,DC=trovp,DC=net 
MB23424  CN=Users,DC=prod,DC=trovp,DC=net 
+0

df = df.drop(df[df.DN.str.contains("OU=DNA")].index) df.DN = df.DN.str.replace('(CN=MB[0-9]{5}\s*,)', '') df 

は、所望の結果を与えた:

df = pd.read_csv('sample.csv', sep=' ', encoding='latin1', engine="python") 

をして、行、awkを削除する – lhoworko

答えて

3

あなたにロジックとしてこの2段階のフィルタリングを試すことができます。 OU=DNAで行をフィルタリングし、主要なCN=xをトリミングする正規表現でstr.replaceメソッドを使用するstr.containsメソッドを使用します。

newDf = df.loc[~df.DN.str.contains("OU=DNA")] 
newDf.DN = newDf.DN.str.replace("^CN=[^,]*,", "") 
newDf 

    UserName DN 
0 MB31212 CN=Users,DC=prod,DC=trovp,DC=net 
1 MB23423 OU=Generic Mailbox,DC=prod,DC=trovp,DC=net 
2 MB23424 CN=Users,DC=prod,DC=trovp,DC=net 

正規表現の下に少し休憩:続いている文字列の先頭を表します^CN=で始まり、[^,]*,を使用して最初のカンマまでパターンをキャプチャします。

+0

エラーが出ます "TypeError:unary〜のための悪いオペランドタイプ: 'float'"これを使用すると、 ITはサンプルデータを扱いますが、大きなデータファイルを使用しています。これに関する助け? – JetCorey

+0

データフレームに欠損値が含まれている可能性があります。 'contains'メソッドを適用する前に、削除またはダブルチェックを行って問題を解決する必要があります。 – Psidom

+0

はい、ユーザー名の中には情報がありません。私はそれらを保つ必要がある場合...私は含まれて使用することはできません? – JetCorey

1

あなたは私が使用したファイルのサンプル読み取るには:私は削除するためにはgrepを検討してお勧めします

User Name DN 
0 MB31212  CN=Users,DC=prod,DC=trovp,DC=net 
1 MB23423  OU=Generic Mailbox,DC=prod,DC=trovp,DC=net 
2 MB23424  CN=Users,DC=prod,DC=trovp,DC=net 
+0

これはサンプルファイル..大規模なデータファイルを使用しています。エラーが発生しました: 'ValueError:NA/NaN値を含むベクトルでインデックスできません'。空白で情報がない行がいくつかあります。これに関する助け? – JetCorey

関連する問題