2015-06-23 40 views
0

我的熊貓數據幀代碼Python Pandas Dataframe將特定的日期時間行標籤設置爲索引中的字符串?

import pandas as pd 
df = pd.DataFrame({'Impressions': [92964, 91282, 88143,272389], 'Clicks': [3128, 3131, 2580, 8839]}, index=pd.to_datetime(['6/1/2015', '6/8/2015', '6/15/2015', '1/1/2020'])) 
df.index.name = 'Date' 

可生產

  Clicks Impressions 
Date       
2015-06-01 3128  92964 
2015-06-08 3131  91282 
2015-06-15 2580  88143 
2020-01-01 8839  272389 

我怎樣才能改變2020-01-01是一個字符串,說Total

我想實現的是:

  Clicks Impressions 
Date       
2015-06-01 3128  92964 
2015-06-08 3131  91282 
2015-06-15 2580  88143 
Total   8839  272389 

更多的上下文 df.index.dtype是數據類型​​ 的,我想我可以通過這個df.index[-1]告訴我訪問索引行標籤這是一個Timestamp('2020-01-01 00:00:00')

但是,如果我嘗試做這樣的事情,這是行不通的: df.index[-1] = 'Total'

錯誤:

Traceback (most recent call last): 
    File "<pyshell#8>", line 1, in <module> 
    df.index[-1] = 'Total' 
    File "C:\Python34\lib\site-packages\pandas\core\index.py", line 922, in __setitem__ 
    raise TypeError("Indexes does not support mutable operations") 
TypeError: Indexes does not support mutable operations 
+0

這篇文章似乎有你在找什麼: http://stackoverflow.com/questions/19851005/rename-pandas-dataframe-index –

+0

感謝您的提示。最終,'df.rename(index = {df.index [-1]:'Total'})'確實將索引值更改爲'Total',這是我在我的問題中發佈的示例數據。但是,當我嘗試在我的主要應用程序中使用它時,它不適用於我。我認爲@bleh是正確的,因爲問題是在同一個數組中處理多個數據類型。不過謝謝。 – Jarad

回答

1

下面是做到這一點的一種方法:

In [154]: %paste 
import pandas as pd 
df = pd.DataFrame({'Impressions': [92964, 91282, 88143,272389], 'Clicks': [3128, 3131, 2580, 8839]}, index=pd.to_datetime(['6/1/2015', '6/8/2015', '6/15/2015', '1/1/2020'])) 
df.index.name = 'Date' 

## -- End pasted text -- 

In [155]: df = df.reset_index() 

In [156]: df['Date'] = df['Date'].astype(object) 

In [157]: df['Date'] = df.Date.dt.date 

In [158]: df.ix[3,0] = 'Total' 

In [159]: df.index = df.Date 

In [160]: df.drop(['Date'], axis=1, inplace=True) 

In [161]: df 
Out[161]: 
      Clicks Impressions 
Date       
2015-06-01 3128  92964 
2015-06-08 3131  91282 
2015-06-15 2580  88143 
Total   8839  272389 

問題正試圖處理同一個數組中的多個數據類型。您需要將該系列投射到object類型中。

+0

非常感謝。我從中學到了很多東西。重置索引。將'Date'設置爲'object'類型。返回Timestamps的'Date'部分。將'Date'列中的最後一行設置爲'Total'(我用它代替:'df.ix [len(df ['Date']) - 1,0] ='Total'')。將'Date'列設置爲'index'。 '從數據幀中刪除'Date'列,因爲它現在是'index'。這是很多工作來設置一個索引行標籤!至少這是一個解決方案。感謝您的幫助。 – Jarad

相關問題