2017-08-12 46 views
2

私は次の表を持っています:numpy配列内で文字列を分割する方法は?

「場所」の列がその中で繰り返されているため、都市名のみを持つように場所から状態を削除しようとしています。

year location state success 
2009 New York, NY NY 1 
2009 New York, NY NY 1 
2009 Chicago, IL IL 1 
2009 New York, NY NY 1 
2009 Boston, MA MA 1 
2009 Long Beach, CA CA 1 
2009 Atlanta, GA GA 1 

私は次のコードを試してみました:

array('New York', 'New York', 'Chicago', ...,) 

私ができるように:結果はのみ、以下のような都市名が含まれているので、私は、文字列を分割することができますどのように

x = KS_clean.column(1) 
np.chararray.split(x, ',') 

をそれをテーブルの中に戻しますか?

申し訳ありませんが基本的な質問ですが、私はPythonには新しく、まだ学習しています。おかげ

+0

編集ありがとうございました –

+0

あなたのデータは、numpyの配列ではなく、pandas DataFrameのようです。チェックしてください。 – DyZ

+0

パンダのDataFrameですが、列(var x)を抽出してその型をチェックすると、numpy.ndarrayと表示されます –

答えて

0

は、私はあなたが(read_csvによって)DataFrame最初の作業が必要だと思う:

import numpy as np 
from pandas.compat import StringIO 

temp=u"""year;location;state;success 
2009;New York, NY;NY;1 
2009;New York, NY;NY;1 
2009;Chicago, IL;IL;1 
2009;New York, NY;NY;1 
2009;Boston, MA;MA;1 
2009;Long Beach, CA;CA;1 
2009;Atlanta, GA;GA;1""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp), sep=";") 

print (type(df)) 
<class 'pandas.core.frame.DataFrame'> 

print (df) 
    year  location state success 
0 2009 New York, NY NY  1 
1 2009 New York, NY NY  1 
2 2009  Chicago, IL IL  1 
3 2009 New York, NY NY  1 
4 2009  Boston, MA MA  1 
5 2009 Long Beach, CA CA  1 
6 2009  Atlanta, GA GA  1 

その後str.splitによって分割し、str[0]で最初のリストを選択します。

df['location'] = df['location'].str.split(', ').str[0] 
print (df) 
    year location state success 
0 2009 New York NY  1 
1 2009 New York NY  1 
2 2009  Chicago IL  1 
3 2009 New York NY  1 
4 2009  Boston MA  1 
5 2009 Long Beach CA  1 
6 2009  Atlanta GA  1 

最終必要で変換する場合valuesで配列番号:

arr = df.values 
print (arr) 
[[2009 'New York' 'NY' 1] 
[2009 'New York' 'NY' 1] 
[2009 'Chicago' 'IL' 1] 
[2009 'New York' 'NY' 1] 
[2009 'Boston' 'MA' 1] 
[2009 'Long Beach' 'CA' 1] 
[2009 'Atlanta' 'GA' 1]] 
+1

これはもっと長い方法ですが、うまくいきました。おかげで –

+0

うれしい幸運を助けることができます! – jezrael

関連する問題