函数列 Python
Posted
技术标签:
【中文标题】函数列 Python【英文标题】:Function columns Python 【发布时间】:2017-08-30 16:43:18 【问题描述】:我正在努力解决在 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' 我的价格(日期) 返回对应的。
所以我不是想通过 mylist[2017-03-23] 来做,而是用应该是 mylist[date] 的东西来做
【问题讨论】:
【参考方案1】:如果列是字符串,我认为你需要:
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:将 ndim > 0 的数组转换为索引会导致以后出错 块 = self.blocks[self._blknos[i]]
date ='2017-03-23'
print (mylist[date])
【讨论】:
感谢您的回复,但我想要在函数中输入日期。像 Myprice(date) date = '2017-03-23' 然后返回对应的列 然后定义myPrice = lambda date: mylist.loc[:, 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]
【讨论】:
感谢您的评论,不幸的是,当我这样做时,它返回TypeError:只有一个元素的整数数组可以转换为索引 @user6457870 抱歉,有错字。我在函数中有data
而不是date
。再试一次以上是关于函数列 Python的主要内容,如果未能解决你的问题,请参考以下文章
如果列值不为 NULL,则 Python pandas 应用函数
python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)
python使用sklearn中的DictVectorizer函数将字典数据(dictionary)转化为numpy数组使用get_feature_names函数获取数组指定列位置的标签信息