2016-06-17 2 views
1

私はPandasにインポートしたcsvファイルを持っています。現在、ほぼ45列のデータを持ち、各列には100行以上の情報があります。今は、開始時に日付スタンプで始まり、日付スタンプで終わるテキストの範囲のみを選択する必要があります。pandasとpythonのcsvカラムからテキストの範囲をコピーします。

例:

<GMT2015-09-01 00:03:29GMT> Hi Rajiv<GMT2015-09-01 19:08:15GMT> Hi Ram <GMT2015-09-01 19:08:15GMT> 

ので、このような構造で、私は、新しいデータフレームに、日付スタンプが追加するには日付スタンプの唯一の最初の段落を選択する必要があります。

答えて

0

のデータをTicket Description<>と入力し、DataFrameilocで選択してください。最後に、stripは空白の開始と終了を行うことができます。

注意:<>が各datetimeの開始時と終了時にのみ有効な場合はうまく動作します。

import pandas as pd 

df = pd.DataFrame({'Ticket Description':['<GMT2015-09-01 00:03:29GMT> Hi Rajiv<GMT2015-09-01 19:08:15GMT> Hi Ram <GMT2015-09-01 19:08:15GMT> ']}) 
print (df) 
            Ticket Description 
0 <GMT2015-09-01 00:03:29GMT> Hi Rajiv<GMT2015-0... 

print (df['Ticket Description'].str.split(r'[<>]', expand=True).iloc[:, 2].str.strip()) 
0 Hi Rajiv 
Name: 2, dtype: object 
+0

はこれらは私が下のそれのコピーを貼り付けてみましょう、別々の列ではありません。 –

+0

こんにちはRajiv、 私たちの仕事の一環として あなたの承認が必要です。 おかげ はこんにちはラム、 リクエスト承認 おかげこれはの列に存在する情報の一種でありますデータフレーム。個々の列から、最初のタイムスタンプから2番目のタイムスタンプまでの間に存在するtxtを抽出する必要があります。 –

+0

データではない場合、あなたのcsvのサンプルを追加することは可能ですか?confidental?もし私がよく分かっていれば、日付スタンプHi、 -------------- -------------- datestampこんにちは、 ----- --------- -------------- datestampこんにちは、 -------------- ------ -------- datestampこんにちは、 -------------- -------------- datestamp'は1行にあります'DataFrame'? – jezrael

0

正規表現とパンダの適用は、必要なものを達成する必要があります。私は、最初のタイムスタンプと2番目のタイムスタンプの間のテキストのみを必要としていると仮定しています。あなたのメッセージでデータフレームを作成しましたが、2番目のメッセージフレームは2から始まります。>(.+?)<では、><で囲まれた任意の数の文字を正規表現で検索します。 ?は貪欲でないので、最初のタイムスタンプから最後までずっと進み、最初の試合で止まるわけではありません。以下

サンプルコード:

import pandas as pd 
import re 

data = pd.DataFrame({"id":[1,2],"ticket_desc":[r"<GMT2015-09-01 00:03:29GMT> Hi Rajiv, As part of our job Request for your approval. Thanks <GMT2015-09-01 19:08:15GMT> Hi Ram, Request Approved Thanks <GMT2015-09-01 19:08:15GMT>.",r"<GMT2015-09-01 00:03:29GMT> 2Hi Rajiv, As part of our job Request for your approval. Thanks <GMT2015-09-01 19:08:15GMT> Hi Ram, Request Approved Thanks <GMT2015-09-01 19:08:15GMT>."]}) 
def finder(x): 
    return re.findall(">(.+?)<",x)[0] 
data["ticket_desc"] = data["ticket_desc"].apply(finder) 
print data["ticket_desc"][0] 
print data["ticket_desc"][1] 

出力:

Hi Rajiv, As part of our job Request for your approval. Thanks 


2Hi Rajiv, As part of our job Request for your approval. Thanks 
関連する問題