首页 > 解决方案 > 在遍历它时查找熊猫数据框的当前值

问题描述

因此,我想根据每一行的值替换我的 pandas 数据框中的列中的值。它类似于规范化,除了我只想要整数值。

df.head()
    Sampling Date   NO2     RSPM/PM10   SO2     Class
0   2006-01-03  30.8    116.0   6.7     NaN
1   2006-01-06  48.0    145.0   10.5    NaN
2   2006-01-12  44.5    166.0   8.5     NaN
3   2006-01-17  44.3    144.0   9.5     NaN
4   2006-01-20  51.3    113.0   7.3     NaN
def normalizeValues(type, val):
    if type=='NO2':
        if val>=0 and val<=100:
            return 1
        elif val>=101 and val<=350:
            return 2
        else:
            return 3
df['NO2']=normalizeValues("NO2",df['NO2'])

我期待

df.head()
    Sampling Date   NO2     RSPM/PM10   SO2     Class
0   2006-01-03  1   116.0   6.7     NaN
1   2006-01-06  1   145.0   10.5    NaN
2   2006-01-12  1   166.0   8.5     NaN
3   2006-01-17  1   144.0   9.5     NaN
4   2006-01-20  1   113.0   7.3     NaN

但是,相反,我得到一个错误

ValueError                                Traceback (most recent call last)
<ipython-input-18-31b35122d724> in <module>()
----> 1 df['NO2']=normalizeValues("NO2",df.NO2)

<ipython-input-17-99deab871e75> in normalizeValues(type, val)
      1 def normalizeValues(type, val):
      2     if type=='NO2':
----> 3         if val>=0 and val<=100:
      4             return 1
      5         elif val>=101 and val<=350:

/usr/local/lib/python2.7/dist-packages/pandas/core/generic.pyc in __nonzero__(self)
    953         raise ValueError("The truth value of a {0} is ambiguous. "
    954                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 955                          .format(self.__class__.__name__))
    956 
    957     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

标签: python-3.xpandas

解决方案


你可以使用这样的东西 -

def normalize(val):
    if val < 100:
        return 1
    elif val > 100 and val < 350:
        return 2
    else:
        return 3

df['NO2'] = df['NO2'].apply(normalize)

推荐阅读