2017-10-10 141 views
2

我的數據集(Excel)中列提取時間戳有一個單一的列,但有太多的信息。我想根據時間戳將它轉換爲表格格式。我想將它轉換成列,如:時間,名稱,網址。我正在嘗試使用Python熊貓來實現這一點。如何使用Python熊貓

我在看數據集是這樣的:

6/10/2017 8:40:34 AM 

James 

URL:.....(multiple rows) 

6/10/2017 8:45:34 AM 

Jenny 

URL:.... 

我怎麼可以這樣使用Python熊貓?

+0

採取你是說有與'URL'或值多行有'Time','Name'和'URL'多三胞胎? – BenWurth

+0

我們可以假設,在數據集中行可分爲樣日期時間,名稱匹配以便組,URL(1或以上)? –

+0

網址中的多行表示我無法根據其位置提取數據。所以我想先獲取時間戳,然後使用時間戳位置來獲取其他變量,如名稱和URL。 –

回答

0

一種方法是使用重塑提供的數值是在精確的順序

df = pd.DataFrame(np.reshape(df.values,(len(df)//3,3))) 
df.columns = ['Time', 'Name', 'URL'] 

    Time     Name URL 
0 6/10/2017 8:40:34 AM James URL:.....(multi rows) 
1 6/10/2017 8:45:34 AM Jenny URL:.... 

編輯:這是另一種方法

  1. 使用使用STR pd.to_datetime
  2. 提取URL提取時間。包含(URL)
  3. 其他所有內容轉至名稱
  4. 組每三行填充NaN並刪除重複項。

    DF [ '時間'] = pd.to_datetime(DF [ 'COL'],誤差= '裹脅')

    df.loc [DF [ 'COL']。str.contains( 'URL' )'URL'] = df ['col']

    df ['Name'] = df [(df ['Time']。isnull()& df ['URL']。isnull())] .COL

    df.drop( 'COL',軸線= 1).groupby(df.index // 3).ffill()。bfill()。drop_duplicates()

你得到

Time    URL      Name 
0 2017-06-10 08:40:34 URL:.....(multi rows) James 
3 2017-06-10 08:45:34 URL:....    Jenny 
+0

您好我無法使用位置索引的數據。 ,多行表示時間並不總是像3,6,9列.....我感到困惑的是如何找到那些時間戳......我打算先找到他們,並基於實時數據的位置,進一步索引... –

+0

@YunongLiu,檢查編輯 – Vaishali

+0

非常感謝!我正在使用你的方法來處理它。希望我能解決這個問題。 –

0

這裏是一個方法,可以幫助。

#create the dataframe 
df = pd.DataFrame({'time': ['6/10/2017 08:40:34 AM', '6/10/2017 08:45:34 AM'], 'name':['James', 'Jenny'], 'url':['www.yahoo.com', 'www.google.com']}) 

# Set the index of the dataframe to time 
indexed_df = df.set_index('time') 

# review the original dataframe 
df 
Out[11]: 
    name     time    url 
0 James 6/10/2017 08:40:34 AM www.yahoo.com 
1 Jenny 6/10/2017 08:45:34 AM www.google.com 

# check the newly indexed dataframe 
indexed_df 
Out[12]: 
         name    url 
time           
6/10/2017 08:40:34 AM James www.yahoo.com 
6/10/2017 08:45:34 AM Jenny www.google.com 

我希望這有助於。這是一個從此doc https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.set_index.html

+0

想超越這個解決方案問題是我的數據集不僅僅是兩條記錄,而且還有一百條.... –