В приведенных ниже данных мне нужно добавить дополнительные столбцы на основе определенных сравнений.
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"
Ошибка (только при использовании Pandas)
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"
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().
Есть ли какое-либо решение для создания этих новых столбцов путем сравнения соседние столбцы (и, что более важно, решение только в pandas ...)