python - 怎么对dataframe中筛选过的数据进行计算
PHP中文网
PHP中文网 2017-04-18 09:47:44
0
2
563

要求:对已生成的一组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。。。 则不报错

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(2)
迷茫

Vous pouvez utiliser la fonction apply pour effectuer des calculs horizontaux ou verticaux sur l'objet dataframe
Par exemple, supposons que vous fassiez un if sur la première colonne de votre c et calculiez le quotient des deux dernières colonnes :

def cal(x):
    if x[0] > 10:  # 对第一列筛选
        return x[-1] / x[-2]
        
c.apply(cal, axis=1)

À ce stade, vous pouvez obtenir le résultat du calcul qui satisfait aux conditions de filtrage, qui est un objet Série

Ty80

Il s'agit d'une question de base sur Python.

if a['end_date']<= datetime.strptime('2013-12-31','%Y-%m-%d').date()

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!