Rumah  >  Soal Jawab  >  teks badan

python - 怎么对dataframe中筛选过的数据进行计算

要求:对已生成的一组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中文网2740 hari yang lalu567

membalas semua(2)saya akan balas

  • 迷茫

    迷茫2017-04-18 09:49:44

    Anda boleh menggunakan fungsi apply untuk melakukan pengiraan mendatar atau menegak pada objek bingkai data
    Contohnya, katakan anda melakukan if pada lajur pertama c anda dan hitung hasil bagi dua lajur terakhir:

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

    Pada ketika ini, anda boleh mendapatkan hasil pengiraan yang memenuhi syarat penapisan, iaitu objek Siri

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:49:44

    Ini ialah soalan asas Python.

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

    Pengiraan vektor bagi Siri masih mengembalikan Siri ini ialah tatasusunan np dan tidak menyediakan kaedah untuk mengembalikan nilai sebenar. Perbandingan hanya boleh dilakukan selepas menggunakan .any(), .all().

    Kemudian kaji dokumentasi Panda dengan teliti.

    balas
    0
  • Batalbalas