python – 根据其他列的条件在pandas中创建一个新列

我想基于if语句创建一个新列,该语句具有数据帧中两个或更多其他列的条件.

例如,column3 = True if(column1< 10.0)和(column2> 0.0).

我环顾四周,似乎其他人已经使用了带有lambda函数的apply方法,但我对这些有点新手.

我想我可以创建两个额外的列,如果每个列满足条件,则使该行为1,然后对列进行求和以检查是否满足所有条件,但这似乎有点不优雅.

如果使用apply / lambda提供答案,我们假设数据框名为sample_df,列为col1,col2和col3.

非常感谢!

最佳答案 您可以在此处使用
eval

# create some dummy data
df = pd.DataFrame(np.random.randint(0, 10, size=(5, 2)), 
                  columns=["col1", "col2"])
print(df)

    col1    col2
0   1       7
1   2       3
2   4       6
3   2       5
4   5       4

df["col3"] = df.eval("col1 < 5 and col2 > 5")
print(df)

    col1    col2    col3
0   1       7       True
1   2       3       False
2   4       6       True
3   2       5       False
4   5       4       False

您也可以在没有eval的情况下通过(df [“col1”]< 5)& (df [“col2”]> 5).

您还可以使用np.where增强示例,以立即明确设置正面和负面情况的值:

df["col4"] = np.where(df.eval("col1 < 5 and col2 > 5"), "Positive Value", "Negative Value")
print(df)

    col1    col2    col3    col4
0   1       7       True    Positive Value
1   2       3       False   Negative Value
2   4       6       True    Positive Value
3   2       5       False   Negative Value
4   5       4       False   Negative Value
点赞