函数列 Python
Function columns Python
我正在努力解决 python/pandas 中可能很容易的事情...
我有一个数据框,其中包含日期列、索引水果名称和内部价格。
我正在寻找一个功能,当我输入一个日期时,它会给我该日期的水果价格。
[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
非常感谢!
编辑:我的目标是输入一个日期,它会返回对应的列,所以
日期 = '2017-03-23'
我的价格(日期)
return对应.
所以我不是想通过 mylist[2017-03-23] 来做,而是用一些应该是 mylist[date] 的东西
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]
如果列是字符串,我想你需要:
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])
我正在努力解决 python/pandas 中可能很容易的事情...
我有一个数据框,其中包含日期列、索引水果名称和内部价格。
我正在寻找一个功能,当我输入一个日期时,它会给我该日期的水果价格。
[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
非常感谢!
编辑:我的目标是输入一个日期,它会返回对应的列,所以 日期 = '2017-03-23' 我的价格(日期) return对应.
所以我不是想通过 mylist[2017-03-23] 来做,而是用一些应该是 mylist[date] 的东西
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]
如果列是字符串,我想你需要:
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])