pandas数据分析出错
请师兄师姐各路大神帮我看看,我下面哪里出了问题,应该怎么搞?源数据:
价格 数量
3.5 20
3.6 25
5.2 18
5.2 7
5.2 6
4.5 9
4.5 25
4.5 12
4.3 37
4.8 15
代码:
import pandas as pd
data = pd.read_csv('D:/new.csv', parse_dates=[0], encoding='gbk')# 读取数据
data['new1'] = ''# 新增列“new1”,并赋空值
# 第一步
data.loc'价格'] > data['价格'].shift(1), 'new1'] = '上升'# 如果价格大于上一位价格,new1显示上升;
data.loc'价格'] < data['价格'].shift(1), 'new1'] = '下降'# 如果价格小于上一位价格,new1显示下降;
data.loc'价格'] == data['价格'].shift(1), 'new1'] = data['new1'].shift(1)
# 如果价格等于上一位价格,new1等于上一位new1
# 第二步
data['new2'] = ''# 新增列“new2”,并赋空值
if data['new1'] == '上升':# 如果new1=“上升”,new2就等于数量;
data['new2'] = data['数量']
else:
data['new2'] = -data['数量']# 否则等于(-数量)
print(data)
第一步能运行,只说第二步
data['new2']=data['new2'].mask(data['new1']=='上升',data['数量'])
data['new2']=data['new2'].mask(data['new1']=='下降',-data['数量']) 第一步得出来的结果在连续=的时候是空值,我希望的是继续等于上面的结果。
第二步直接报错:
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). bin_chb 发表于 2021-11-22 22:21
第一步能运行,只说第二步
data['new2']=data['new2'].mask(data['new1']=='上升',data['数量'])
data['n ...
谢谢你,第二步完美解决,第一步在连续=的时候,会出现空值
我希望空值还是等于上面的结果,这个能帮我吗?
谢谢!!{:1_893:}{:1_893:}{:1_893:} 本帖最后由 lbbas 于 2021-11-22 22:57 编辑
首先也是一个pandas初学者,刚查了下文档啥的,给出我的一些意见,不一定准确哈。
1.data['new1'] = data['价格'].diff(1).apply(lambda x: '上升' if x > 0 else('下降' if x<0else None))
data.fillna(method='ffill') 不知道你写的代码问题出在哪里,但是这个好像能解决你的问题。不过第一个值你需要考虑下。
2.data['new2'] = data.apply(lambda x: x['数量'] if x['new1']== '上升' else -x["数量"],axis=1) 你写的data['new1']是一个series,是不能这样比较的。 lizy169 发表于 2021-11-22 22:31
谢谢你,第二步完美解决,第一步在连续=的时候,会出现空值
我希望空值还是等于上面的结果,这个能帮我 ...
啥意思?data['new2']=data['new2'].mask(data['new1']=='',data['new2'].shift(1))这样?? bin_chb 发表于 2021-11-22 22:59
啥意思?data['new2']=data['new2'].mask(data['new1']=='',data['new2'].shift(1))这样??
对,你告诉我第二步的方法,把第二步的问题解决了,这个问题我开始搞了好几天,都没搞明白,谢谢你了。
第一步的问题,我现在还没搞清楚 lizy169 发表于 2021-11-22 23:16
对,你告诉我第二步的方法,把第二步的问题解决了,这个问题我开始搞了好几天,都没搞明白,谢谢你了。
...
第一步你考虑的不周全,相等写错了,这种直接增加一列data['价格pre']=data['价格'].shift(1),逻辑上会清楚一点,然后你直接比较两列大小就好了
页:
[1]