Python 根据其他列的条件在pandas中创建新列
我想在if语句的基础上创建一个新列,该语句在dataframe中具有两个或更多其他列的条件 例如,如果(column1<10.0)和(column2>0.0),则column3=True 我环顾四周,似乎其他人使用了带有lambda函数的apply方法,但我在这些方面有点新手 我想如果每一列都满足条件,我可以增加两列,使该行成为1,然后对列求和以检查是否满足所有条件,但这似乎有点不雅观 如果您使用apply/lambda提供答案,那么假设数据帧称为sample_df,列为col1、col2和col3 非常感谢 简而言之,您可以在此处使用:Python 根据其他列的条件在pandas中创建新列,python,pandas,dataframe,lambda,apply,Python,Pandas,Dataframe,Lambda,Apply,我想在if语句的基础上创建一个新列,该语句在dataframe中具有两个或更多其他列的条件 例如,如果(column10.0),则column3=True 我环顾四周,似乎其他人使用了带有lambda函数的apply方法,但我在这些方面有点新手 我想如果每一列都满足条件,我可以增加两列,使该行成为1,然后对列求和以检查是否满足所有条件,但这似乎有点不雅观 如果您使用apply/lambda提供答案,那么假设数据帧称为sample_df,列为col1、col2和col3 非常感谢 简而言之,您可以
# 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
谢谢,我用了numpy的“where”方法。虽然它似乎不喜欢“and”关键字,但它只适用于“&”和“|”。有没有一种方法可以使用pandas而不是numpy来指定值?我看到它返回一个布尔列表。你一定要把它当作面具什么的吗?寻找类似“如果col1和col2满足某些条件,col3=col1/col2,否则无”的内容@nickm是的,您可以使用布尔级数作为所需值的掩码。还有一只大熊猫,它有点不同。
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