我想在我的pandas列中给出if条件,但是什么都没有应用。我检查了列的dtypes,它说Float32,我在任何键入中都错了还是有点不知道
我尝试过此代码:
How to use numpy.where with logical operators
Numpy "where" with multiple conditions
multiple if else conditions in pandas dataframe and derive multiple columns
并且我尝试使用numpy.where,但是什么也没有发生。.data ['growth']总是有结果2
我的代码:
data['growth'] = np.where(np.logical_and(data['tqty'] < 0, data['qty_x'] < 0), 1, 2)
我不喜欢使用if或numpy.where
非常感谢
答案 0 :(得分:2)
尝试使用DataFrame的方法“应用”:
使用此示例数据:
df = pd.DataFrame(data=[(-1, -1),
(-1, 0),
(0, -1),
(0, 0),
(1, 1)],
columns=['tqty', 'qtyx'])
| | tqty | qtyx |
|---:|-------:|-------:|
| 0 | -1 | -1 |
| 1 | -1 | 0 |
| 2 | 0 | -1 |
| 3 | 0 | 0 |
| 4 | 1 | 1 |
您可以使用lambda函数获取此信息:
df['growth'] = df.apply(
lambda row: 1 if ((row['tqty'] < 0) & (row['qtyx'] < 0))
else 2,
axis=1)
| | tqty | qtyx | growth |
|---:|-------:|-------:|---------:|
| 0 | -1 | -1 | 1 |
| 1 | -1 | 0 | 2 |
| 2 | 0 | -1 | 2 |
| 3 | 0 | 0 | 2 |
| 4 | 1 | 1 | 2 |
'Axis = 1'允许您迭代行,并且lambda在每一行上运行以测试这两种情况。