我有一个包含以下列的数据框:
amount1 - a numeric value
amount2 - a different numeric value
ccy1 - a 3-char currency code
ccy2 - a different 3-char currency code
数据被组织成有行,其中元组(amount1,ccy1,amount2,ccy2)将与由元组组成的另一行完全对应(amount2,ccy2,amount1,ccy1)
我想要做的是将我的数据框分成两部分。在df1中我想包括那些ccy1> = ccy2(按字母顺序排序)的行,而在df2中,我想要包含那些cc1< ccy2。
我编写了一个执行拆分的简单函数:
def splitfunctest(s1, s2):
if s1 > s2:
return 'BIG'
else:
return 'SMALL'
但我在尝试将其应用到我的新专栏时遇到了麻烦:
df['splitter'] = splitfunctest(df['ccy1'], df['ccy2'])
但得到:
追踪(最近一次通话): 文件"",第1行,in 在splitfunctest中输入"",第2行 ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()
所以我可以看到函数正在尝试(并且失败)来评估传递给它的每个字段的全部内容 - 那么如何让它以原子方式运行呢? - 非常感谢任何帮助。
答案 0 :(得分:1)
试试这个:
df1 = df[df['ccy1'] >= df['ccy2']]
df2 = df[df['ccy1'] < df['ccy2']]