Python Pandas:数据帧/系列中元素的比较

Dea*_*man 0 python numpy pandas numpy-ndarray

我在名为“myDataFrame”的变量中有一个 DataFrame,如下所示:

+---------+-----+-------+-----
| Type    | Count  |  Status |
+---------+-----+-------+-----
| a       |  70    |     0   |
| a       |  70    |     0   |
| b       |  70    |     0   |
| c       |  74    |     3   |
| c       |  74    |     2   |
| c       |  74    |     0   |
+---------+-----+-------+----+
Run Code Online (Sandbox Code Playgroud)

我使用矢量化方法来处理此 DataFrame 中的行,因为我拥有的行数约为 1.16 亿。

所以我写了这样的东西:

myDataFrame['result'] = processDataFrame(myDataFrame['status'], myDataFrame['Count'])
Run Code Online (Sandbox Code Playgroud)

在我的函数中,我试图这样做:

def processDataFrame(status, count):
    resultsList = list()
    if status == 0:
       resultsList.append(count + 10000)
    else:
       resultsList.append(count - 10000)

    return resultsList
Run Code Online (Sandbox Code Playgroud)

但我得到这个比较状态值:

Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

WeN*_*Ben 5

我们可以不用selfdef功能

myDataFrame['result'] = np.where(myDataFrame['status']==0,
                                 myDataFrame['Count']+10000,
                                 myDataFrame['Count']-10000)
Run Code Online (Sandbox Code Playgroud)

更新

df.apply(lambda x : processDataFrame(x['Status'],x['Count']),1)
0    [10070]
1    [10070]
2    [10070]
3    [-9926]
4    [-9926]
5    [10074]
dtype: object
Run Code Online (Sandbox Code Playgroud)