>>> beers = pd.Series(np.random.randint(1, 10, 20))
>>> type(beers)
pandas.core.series.Series
>>> (beers[:10] - beers.mean()).apply(lambda x: 'low' if x < 0 else 'high')
0 high
1 low
2 high
3 low
4 high
5 high
6 low
7 high
8 high
9 low
dtype: object
现在,如果beers是DataFrame:
>>> beers = beers.to_frame()
>>> type(beers)
pandas.core.frame.DataFrame
>>> (beers[:10] - beers.mean()).apply(lambda x: 'low' if x < 0 else 'high')
...
ValueError: The truth value of a Series is ambiguous.
Use a.empty, a.bool(), a.item(), a.any() or a.all().
在beers只有一列的情况下,可以使用squeeze:
>>> (beers[:10] - beers.mean()).squeeze().apply(lambda x: 'low' if x < 0 else 'high')
0 high
1 low
2 high
3 low
4 high
5 high
6 low
7 high
8 high
9 low
Name: 0, dtype: object
beers
不是Series
否则代码工作正常。它当然是一个DataFrame
并且很可能是一个DataFrame
只有一列演示:
现在,如果
beers
是DataFrame
:在
beers
只有一列的情况下,可以使用squeeze
:我想你想做的是 如果啤酒是一个系列,如果它是一个df,你也需要列名
它不能将啤酒[:10]-beers.mean()放入一个新的系列,这就是为什么会出现异常
如果beers是DF,并且您希望在表中的单个列上执行此操作,那么 只是先挑的
相关问题 更多 >
编程相关推荐