在下面的数据中,我需要根据某些比较添加额外的列。
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"
错误(仅使用熊猫)
追溯(最近一次通话):文件“ C:\ Trials \ Test.py”,第291行,位于如果((df.v3 df.v1)):文件“ C:\ Winpy \ WPy64-3770 \ python-3.7.7.amd64 \ lib \ site-packages \ pandas \ core \ generic.py”,行1479,位于__nonzero__f“ {type(self).__ name__}的真值不明确。”ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
[现在,我看过几篇类似this one的文章,就如何将numpy用于所需的结果给出了很好的解释。但是,相同的错误重复如下所示。
新代码(带numpy):
if (np.logical_and((df.SMA_8d < df.ClosePrice) , (df.ClosePrice < df.SMA_3d))): df["Mark2"] = "True" else: df["Mark2"] = "False"
追溯(最近一次通话):文件“ C:\ Trials \ Test.py”,第291行,位于如果(np.logical_and((df.v3 df.v1))):文件“ C:\ Winpy \ WPy64-3770 \ python-3.7.7.amd64 \ lib \ site-packages \ pandas \ core \ generic.py”,行1479,位于__nonzero__f“ {type(self).__ name__}的真值不明确。”ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。是否有可能通过比较相邻的列来生成那些新列(更重要的是,仅在熊猫中有一个解决方案...)
在下面的数据中,我需要根据某些比较添加额外的列。 test_file.csv日v1 v2 v3周一38 42 42周二45 35 43周三36 45 43周四41 35 45周五37 42 44周六40 43 42 ...
您可以使用np.where
,例如: