2016-05-09 16 views
1

373行×3列のデータを持つCSVファイルがあります(デフォルトではDataFrameだと思います)。 一部のデータフレームの最後には、削除したい文字(部分文字列)がいくつかあり、後でこの新しいテーブルを新しい名前で保存します。 私はそれをするのに苦労しました。私はテーブルの列を別々に文字列として格納しようとしましたが、これらの不要な部分文字列を置き換えることはnull( '')になります。それは動作しませんでした今、私は失われています!助けてください!! これは私が試したものです:列にテーブルの分割と、あなたは「.fail」と」.fail2' を見ることができるように文字列を持つパンダテーブルの特定の部分文字列を削除する方法

import pandas as pd 

loss=pd.read_csv('Loss.csv') 

eq1_list=str(loss.ix[:,0]) 

eq2_list=str(loss.ix[:,1]) 

eq3_list=str(loss.ix[:,2]) 

for eq in eq1_list: 
    eq.replace('.fail','') 
    eq.replace('.fail2','') 

print(eq1_list) 

を交換するには、パンダのテーブルに部分文字列であり、これらの部分文字列は、多くの中に存在しています373 * 3テーブル全体の要素。このメソッドは部分文字列を削除しませんでした。 サンプル入力:

 EQ1  EQ2  EQ3 
0 A1.fail A2.fail NaN 
1 B1.fail2 B3.fail B3.fail2 
... 
372 X1.fail X2.fail2 X3.fail 

予想される出力:

A1 A2 NaN 
B1 B3 B3 
... 
X1 X2 X3 
+0

サンプル入力データと期待される出力を提供してください。 – pmaniyan

答えて

1

これは、あなたがDataFrame.replaceを使用して思ったより道簡単です:

new_loss = loss.replace('\.fail.?$', '', regex=True) 

これは ".failXを" 一致する文字列のサフィックスを削除します、 Xは何でもかまいません。

replaceメソッドは非常に強力で多くのオプションがあります。私は上記のリンク先の文書を読むことをお勧めします。

+0

.fail2を置き換えるには、行を2回実行することができますが、2つの文字列を同時に置き換える方法をお読みになることをお勧めします。 – Shovalt

+0

こんにちは、私はあなたが@ショヴァルトと言ったことを試みました。しかし、それは動作しませんでした。 – controlfreak

+0

@Vachanあなたは正しいですか?以前はコードをテストしていませんでしたが、今は固定してテストしています。 regexを有効にしなければ、replaceメソッドは完全一致(部分文字列ではない)だけを置き換えることが判明します。試してごらん。 – Shovalt

関連する問題