2017-04-24 7 views
2

データ(データいじる)パンダのフィルタデータを削除することができます。は、どのように私はパンダシリーズで私と一緒に

data = ["1. stock1 (1991)", 
"3. stock13 (1993)", 
"5. stock19 (1999)", 
"89. stock105 (2001)"] # pandas Series 

私は

を使用してみましたが、それぞれの文字列をフィルタリングする必要があると

s.no sdata  year 
1  stock1  1991 
3  stock13  1993 
5  stock19  1999 
89  stock105 2001 

として保存します

data = stock["Rank & Title"].str.split(".") 
+0

あなたは正規表現(正規表現)のためのフラグを追加することもできますあなたの質問に。 – Jon

+0

これはパンダよりも正規表現の問題のようです – Jon

答えて

1

あなたは正規表現でstr.extract方法を試すことができます(?P<sno>\d+)\.\s(?P<sdata>\w+)\s\((?P<year>\d+)\)は(?P<name>で行われる)捕捉基を命名することなく(\d+)\.\s(\w+)\s\((\d+)\)に簡略化することができる正規表現、上

data = ["1. stock1 (1991)", 
"3. stock13 (1993)", 
"5. stock19 (1999)", 
"89. stock105 (2001)"] 

s = pd.Series(data) 

s.str.extract("(?P<sno>\d+)\.\s(?P<sdata>\w+)\s\((?P<year>\d+)\)", expand=True) 

# sno  sdata year 
#0 1  stock1 1991 
#1 3 stock13 1993 
#2 5 stock19 1999 
#3 89 stock105 2001 

ブレークダウン。 (\d+)(\w+)(\d+)はそれぞれs.nostocknameをキャプチャします。


それとも、単に空白で分割したい、その後、クリーン列までのあなたの本当のデータがどのように見えるかに応じて、可能性があります

(s.str.split(" ", expand=True) 
    # strip period and parenthesis 
.apply(lambda col: col.str.strip(".()")) 
    # rename columns 
.rename(columns={0: "s.no", 1: "sdata", 2: "year"})) 

# s.no  sdata year 
#0 1 stock1 1991 
#1 3 stock13 1993 
#2 5 stock19 1999 
#3 89 stock105 2001 
関連する問題