Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据其他列的条件在pandas中创建新列_Python_Pandas_Dataframe_Lambda_Apply - Fatal编程技术网

Python 根据其他列的条件在pandas中创建新列

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 非常感谢 简而言之,您可以

我想在if语句的基础上创建一个新列,该语句在dataframe中具有两个或更多其他列的条件

例如,如果(column1<10.0)和(column2>0.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