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)
我错过了什么?
我们可以不用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)