根据逻辑测试创建pandas数据帧列

时间:2014-10-21 16:19:22

标签: python pandas

我有一个包含以下列的数据框:

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()

所以我可以看到函数正在尝试(并且失败)来评估传递给它的每个字段的全部内容 - 那么如何让它以原子方式运行呢? - 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

试试这个:

df1 = df[df['ccy1'] >= df['ccy2']]
df2 = df[df['ccy1'] < df['ccy2']]
相关问题