2016-07-09 2 views
5

これは本質的に単純なタスクのようですが、私のデータフレーム全体から ''を削除して、 '' dateframeは、複数の列の数百人が含まれており、短期的に次のようになります。私はDFのすべての列を反復処理するためにそれを書かれていますがされていないパンダのデータフレームで特殊文字を削除する

Time   A1  A2 
2.0002546296 1499 1592 
2.0006712963 1252 1459 
2.0902546296 1731 2223 
2.0906828704 1691 1904 
2.1742245370 2364 3121 
2.1764699074 2096 1942 
2.7654050926 *7639* *8196* 
2.7658564815 *7088* *7542* 
2.9048958333 *8736* *8459* 
2.9053125000 *7778* *7704* 
2.9807175926 *6612* *6593* 
3.0585763889 *8520* *9122* 

限り最初の列は、私はこの

が出ている行くよう

0  NaN 
1  NaN 
2  NaN 
3  NaN 
4  NaN 
5  NaN 
6  NaN 
7  NaN 
8  NaN 
9  NaN 
10  NaN 
11  NaN 
12  NaN 
13  NaN 
14  NaN 
15  NaN 
16  NaN 
17  NaN 
18  NaN 
19 7639.0 
20 7088.0 
21 8736.0 
22 7778.0 
23 6612.0 
24 8520.0 

を生み出す

df['A1'].str.replace('*','').astype(float) 

はちょうどパンダにおけるデータフレームに「*」を削除する非常に簡単な方法はありますか?全体のデータフレームに適用され

答えて

7

使用replace

df 
Out[14]: 
     Time  A1  A2 
0 2.000255 1499 1592 
1 2.176470 2096 1942 
2 2.765405 *7639* *8196* 
3 2.765856 *7088* *7542* 
4 2.904896 *8736* *8459* 
5 2.905312 *7778* *7704* 
6 2.980718 *6612* *6593* 
7 3.058576 *8520* *9122* 

df=df.replace('\*','',regex=True).astype(float) 

df 
Out[16]: 
     Time A1 A2 
0 2.000255 1499 1592 
1 2.176470 2096 1942 
2 2.765405 7639 8196 
3 2.765856 7088 7542 
4 2.904896 8736 8459 
5 2.905312 7778 7704 
6 2.980718 6612 6593 
7 3.058576 8520 9122 
+2

置き換えた後に 'df = df.astype(float)'を追加して取得しています。私は 'inplace'をスキップして' df = df.replace( '\ *'、 ''、regex = True).astype(float) 'を呼び出し、それを良いものと呼びます。 – piRSquared

+0

@piRSquaredは 'inplace'を使うのは悪い習慣です。 – shivsn

+0

いいえ、ただ好みです。この場合、あなたがインプレースを使用したとき、それは連鎖を許して戻ってこなかった。それがなければ、私はastype(フロート) – piRSquared

0

マップやストリップの機能を使用する別の解決策があります。解析手順はのみ必要な列に適用される Pandas DataFrame: remove unwanted parts from strings in a column.

df = 
    Time  A1  A2 
0 2.0  1258 *1364* 
1 2.1  *1254* 2002 
2 2.2  1520 3364 
3 2.3  *300* *10056* 

cols = ['A1', 'A2'] 
for col in cols: 
    df[col] = df[col].map(lambda x: str(x).lstrip('*').rstrip('*')).astype(float) 

df = 
    Time  A1  A2 
0 2.0  1258 1364 
1 2.1  1254 2002 
2 2.2  1520 3364 
3 2.3  300  10056 

: あなたは以下のリンクを見ることができます。

関連する問題