我有一个函数f(a,B),它取两个Pandas Dataframe ,对值应用不同的公式,如下所示:
def f(a, b):
if a > 0 and b > 0:
return a + b
elif a > 0 and b < 0:
return a - b
elif a < 0 and b > 0:
return a * b
elif a < 0 and b < 0:
return a / b
else:
print('bad')
dfa = pd.DataFrame({'a':[1, 1]})
dfb = pd.DataFrame({'b':[2, 2]})
f(dfa,dfb)
这里的问题特别是,我需要函数中处理的当前值来分支,然而,使用and操作符会导致下面的结果。
Series的真值不明确。请使用.empty、.bool()、. item()、.any()或.all()
而使用&将导致
“无法将[type]数组与[bool]类型的标量进行比较”
编辑:
考虑到这些答案,我开始意识到我最小的例子可能不能很好地传达我的意图。
def f(a, b):
if a > 0 and b > 0:
X = operationA()
elif a > 0 and b < 0:
X = operationB()
elif a < 0 and b < 0:
X = operationC()
elif a < 0 and b < 0:
X = operationD()
else:
print('bad')
Y = operationY()
return X, Y
# both dataframes are part of a training example label example = (a, b)
df_label_partA = pd.DataFrame({'a':[1, 1, -1, -1]})
df_label_partB = pd.DataFrame({'b':[1, -1, 1, -1]})
f(df_label_partA, df_label_partB)
不能单独考虑 Dataframe ,因为每个帧都是标签列表的一部分(基本上是分成2个列表的元组)
2条答案
按热度按时间2nc8po8w1#
试试这个:
输出:
bnl4lu3b2#
你可以试试这个
输出