如何使用python中的循环减去符合某些条件的csv文件中的值?

问题描述

我正在尝试将满足特定条件的 csv 文件中的 surp 值减去另一个满足另一个条件的 surp 值,我必须重复 60 次,如下所示:

surp [prime type == 'nl_unamb' or 'nl_amb',target nr == '0',prime nr == '0'] 的值 - surp [prime type == 'en_unamb' or 'en_amb',target nr = '0',prime nr = '0'] 的值 = 值 1

...

surp [prime type == 'nl_unamb' or 'nl_amb',target nr == '59',prime nr == '59'] 的值 - surp [prime type == 'en_unamb' or 'en_amb',target nr = '59',prime nr = '59'] 的值 = 值 60

为此,我尝试了以下代码:

import pandas as pd

df = pd.read_csv("surprisal.primed_extracted.csv")

for i in range(60):

    pr_nl = df.loc[(df['surp'])
                  & (df['prime_type'] == 'nl_unamb')
                  & (df['prime_type'] == 'nl_amb')
                  & (df['target_nr'] == i)
                  & (df['prime_nr'] == i)]

    pr_en = df.loc[(df['surp'])
                  & (df['prime_type'] == 'en_unamb')
                  & (df['prime_type'] == 'en_amb')
                  & (df['target_nr'] == i)
                  & (df['prime_nr'] == i)]
    
    df.['sub_prime_language'] = pr_nl.loc['surp'] - pr_en.loc['surp']

但是,我收到以下错误:

Traceback (most recent call last):
  File "calculate.py",line 13,in <module>
    & (df['prime_nr'] == i)]
  File "/usr/lib/python2.7/dist-packages/pandas/core/ops.py",line 786,in wrapper
    return filler(self._constructor(na_op(self.values,other.values),File "/usr/lib/python2.7/dist-packages/pandas/core/ops.py",line 758,in na_op
    result = lib.vec_binop(x,y,op)
  File "pandas/lib.pyx",line 914,in pandas.lib.vec_binop (pandas/lib.c:16248)
  File "pandas/lib.pyx",line 907,in pandas.lib.vec_binop (pandas/lib.c:16122)
TypeError: unsupported operand type(s) for &: 'float' and 'bool'

我期待听到任何人能提出的任何解决方案!

亲切的问候,
米津

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)