Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 将相邻列与新列进行比较(布尔值)_Python_Pandas_Numpy_Boolean_Comparison - Fatal编程技术网

Python 将相邻列与新列进行比较(布尔值)

Python 将相邻列与新列进行比较(布尔值),python,pandas,numpy,boolean,comparison,Python,Pandas,Numpy,Boolean,Comparison,在下面的数据中,我需要根据某些比较添加额外的列 test_file.csv day v1 v2 v3 mon 38 42 42 tue 45 35 43 wed 36 45 43 thu 41 35 45 fri 37 42 44 sat 40 43 42 sun 43 40 43 我已经尝试了这些代码行,它抛出了代码下面显示的错误 df["Compare_col_1"] = "" df["Compare_col_2"] = "" if ((df.v3 <

在下面的数据中,我需要根据某些比较添加额外的列

test_file.csv

day v1  v2  v3
mon 38  42  42
tue 45  35  43
wed 36  45  43
thu 41  35  45
fri 37  42  44
sat 40  43  42
sun 43  40  43
我已经尝试了这些代码行,它抛出了代码下面显示的错误

df["Compare_col_1"] = ""
df["Compare_col_2"] = ""

if ((df.v3 < df.v1) & (df.v2 > df.v1)):
    df["Compare_col_1"] = "Balanced"
else:
    df["Compare_col_1"] = "Out_of_Bounds"


if df.v3 < df.v2:
    df["Compare_col_2"] = "Eligible"
else:
    df["Compare_col_2"] = "Slow"
只使用熊猫

Traceback (most recent call last): File "C:\Trials\Test.py", line 291, in if ((df.v3 df.v1)): File "C:\Winpy\WPy64-3770\python-3.7.7.amd64\lib\site-packages\pandas\core\generic.py", line 1479, in __nonzero__ f"The truth value of a {type(self).__name__} is ambiguous. " ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 现在,我看到了几篇文章,如,对如何使用numpy获得所需的结果给出了极好的解释。但同样的错误会重复出现,如下所示

numpy的新代码:

if (np.logical_and((df.SMA_8d < df.ClosePrice) , (df.ClosePrice < df.SMA_3d))):
    df["Mark2"] = "True"
else:
    df["Mark2"] = "False"
通过比较相邻的列,以及更重要的是,只使用熊猫的解决方案,是否有可能生成这些新列…

您可以使用如下方法:

您可以像这样使用:


亲爱的本,非常感谢你的回答。。我想知道你们是否还可以帮助我补充一个问题。使用.shift功能检查前一天的数据。。例如,如果前一天的“比较列1”是平衡的,那么在新列“比较列3”中添加一些内容。。请在这一点上也给我加一行,谢谢。。多谢各位much@Lokkii9类似于df['Compare_col_3']=np.wheredf['Compare_col_1'].shift.eq'Balanced'、'beday_Balanced'、'beday_out'?亲爱的本,非常感谢你的回答。。我想知道你们是否还可以帮助我补充一个问题。使用.shift功能检查前一天的数据。。例如,如果前一天的“比较列1”是平衡的,那么在新列“比较列3”中添加一些内容。。请在这一点上也给我加一行,谢谢。。多谢各位much@Lokkii9类似于df['Compare\u col\u 3']=np.wheredf['Compare\u col\u 1'].shift.eq'Balanced'、'beday\u Balanced'、'beday\u out'? Traceback (most recent call last): File "C:\Trials\Test.py", line 291, in if (np.logical_and((df.v3 df.v1))): File "C:\Winpy\WPy64-3770\python-3.7.7.amd64\lib\site-packages\pandas\core\generic.py", line 1479, in __nonzero__ f"The truth value of a {type(self).__name__} is ambiguous. " ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
df["Compare_col_1"] = np.where((df.v3<df.v1)&(df.v2>df.v1), "Balanced", "Out_of_Bounds")
df["Compare_col_2"] = np.where(df.v3<df.v2, "Eligible", "Slow")