2017-11-29 6 views
1

URLのpandasデータフレーム列から日付を抽出したい。しかし、私はValueError: Unknown string format受信「未知の文字列形式」 - pandasデータフレームのURLを解析するとエラーが発生する

import dateutil.parser as dparser 
import pandas as pd 

    df_results["URL"] = df_results["URL"].astype("str") # String conversion 
    URLs = df_results["URL"].tolist()     # List creation 
    for URL in URLs:          # Loop through list 
     date = dparser.parse(URL,fuzzy=True)    # Parse date 
     print date          # Print date 

: はここに私のコードです

ValueError        Traceback (most recent call last) 
<ipython-input-23-fd55da2e8e1e> in <module>() 
    69 
    70 
---> 71 df_results = parse_URL(df_final) # parse 2 
    72 
    73 print df_results.head() 

<ipython-input-23-fd55da2e8e1e> in parse_URL(df_final) 
    51  URLs = df_results["URL"].tolist() 
    52  for URL in URLs: 
---> 53   test = dparser.parse(URL,fuzzy=True) 
    54   print test 
"_") 

C:\Python27\lib\site-packages\dateutil\parser.pyc in parse(timestr, parserinfo, **kwargs) 
    1180   return parser(parserinfo).parse(timestr, **kwargs) 
    1181  else: 
-> 1182   return DEFAULTPARSER.parse(timestr, **kwargs) 
    1183 
    1184 

C:\Python27\lib\site-packages\dateutil\parser.pyc in parse(self, timestr, default, ignoretz, tzinfos, **kwargs) 
    557 
    558   if res is None: 
--> 559    raise ValueError("Unknown string format") 
    560 
    561   if len(res) == 0: 

ValueError: Unknown string format 

私は、URLがハイパーリンクのいくつかの並べ替えとして格納されていることを前提としています。しかし、df.info()はURLobject dtypeを示しています。

Q1:URLのpandas列を生の文字列dtypeに変換する方法はありますか。

Q2:pandasデータフレーム列のURLから日付を抽出して新しい列に保存するにはどうすればよいですか?

答えて

1

あなたが解析できない日時のNaTためerrors='coerce'to_datetimeを必要とするようだが、最初のparse url

from urllib.parse import urlsplit, parse_qs 

df = pd.read_csv('data_sample.csv') 

f = lambda x: pd.Series({k: v[0] for k, v in parse_qs(urlsplit(x).query).items()}) 
df_results = df['URL'].apply(f) 
df_results["checkinDate"] = pd.to_datetime(df_results["checkinDate"], errors='coerce') 
df_results["checkoutDate"] = pd.to_datetime(df_results["checkoutDate"], errors='coerce') 
print (df_results) 
+0

これはあなたがデータサンプルを追加することができます「のNaT」 – sudonym

+0

の完全な列を残し? – jezrael

関連する問題