要求:对已生成的一组dataframe数据列,需要根据日期做条件判断,对不同日期范围的数据,以不同的规则进行数据类运算,运算结果添加至一个新的列。
...
a=pd.DataFrame(data1,columns=['end_date','province','price']) #数组a
b=pd.DataFrame(data2,columns=['province','index_2013','index_2014','index_2015','index_2016'])#数据b
c=pd.merge(a,b,on='province') #以province进行连接
if a['end_date']<= datetime.strptime('2013-12-31','%Y-%m-%d').date(): #判断日期小于13年
c['axp']=c['price']c['index_2013'] #数据c添加列,数据值=priceindex_2013
print c
对if语句行报错,报错如下:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
在报错行,条件后添加.any()或者.all()则报错消失,但得到的数据不是想要的结果如:if a['end_date'].any()<= datetime。。。 则不报错
Vous pouvez utiliser la fonction
apply
pour effectuer des calculs horizontaux ou verticaux sur l'objet dataframePar exemple, supposons que vous fassiez un if sur la première colonne de votre c et calculiez le quotient des deux dernières colonnes :
À ce stade, vous pouvez obtenir le résultat du calcul qui satisfait aux conditions de filtrage, qui est un objet Série
Il s'agit d'une question de base sur Python.
Le calcul vectoriel d'une série renvoie toujours la série. La série est un tableau np et ne fournit pas de méthode pour renvoyer une valeur vraie. La comparaison n'est possible qu'après avoir utilisé
.any()
,.all()
.Ensuite, étudiez attentivement la documentation Pandas.