2017-04-05 76 views
2

我正在蟒蛇/熊貓可能很容易的東西...函數列Python

我有一個數據幀與列日期,索引水果名稱和內部價格。

我正在尋找一個函數,當我輸入日期時,給我這個日期的水果價格。

[in] mylist 
[out] 

      2017-03-23 2017-03-22 2017-03-21 2017-03-20 2017-03-17 2017-03-16 

pear   12  13  14  12  20  17 
apple   14  9  11  21  12  4 
banana   120  180  140  170  605  802 
etc...   NaN  NaN  NaN  NaN  NaN  NaN 


ex. [in] myPrice('2017-03-23') 
[out] 2017-03-23 
pear  12 
apple  14 
banana  120 

非常感謝!

編輯:我的目標是進入一個日期,這讓我回coresponding列,因此 日期=「2017年3月23日」 myPrice(日期) 返回相應。

所以我不會試圖通過MYLIST [2017年3月23日],但東西誰應該MYLIST [日期]

回答

3

我認爲你需要的,如果列是字符串:

mylist['2017-03-23'] 
mylist.loc[:, '2017-03-23'] 

如果列日期時間則需要datetime

#If columns not datetime, convert them 
mylist.columns = pd.to_datetime(mylist.columns) 

#convert string to datetime 
date = pd.to_datetime('2017-03-23') 
#another solution 
#date = pd.Timestamp('2017-03-23') 

print (mylist[date]) 
pear  12 
apple  14 
banana 120 
Name: 2017-03-23 00:00:00, dtype: int64 

print (mylist.loc[:, date]) 
pear  12 
apple  14 
banana 120 
Name: 2017-03-23 00:00:00, dtype: int64 

而對於一列DataFrame添加[]

print (mylist[[date]]) 
     2017-03-23 
pear   12 
apple   14 
banana   120 

print (mylist.loc[:, [date]]) 
     2017-03-23 
pear   12 
apple   14 
banana   120 

也可以(但我得到警告):

VisibleDeprecationWarning: converting an array with ndim > 0 to an index will result in an error in the future block = self.blocks[self._blknos[i]]

date ='2017-03-23' 
print (mylist[date]) 
+0

感謝您的回覆,但我希望通過在函數中輸入日期。 像 Myprice(日期) 日期= '2017年3月23日' 然後返回相應的列 – user6457870

+0

然後只限定'myPrice =拉姆達日期:mylist.loc [:,日期]' – Quickbeam2k1

+0

它給回<函數__主要__。 > – user6457870

3

pandas允許你通過列名訪問列與[]選擇

mylist['2017-03-23'] 

但是,爲了更加明確,你可以使用.loc[]

mylist.loc[:, '2017-03-23'] 

甚至使用xs方法:

mylist.xs('2017-03-23', axis=1) 

上述任何一個可以被包裹在一個功用:

def myPrice(date): 
    return mylist[date] 
+0

謝謝您的COMENT,不幸的是,當我這樣做,它返回 TypeError:只有一個元素的整數數組可以轉換爲索引 – user6457870

+0

@ user6457870對不起,有一個錯字。我在函數中使用'data'而不是'date'。再試一次 – piRSquared

+0

我知道我已經修改了它,它仍然會給出錯誤... – user6457870