Python 根据对其他几个预先存在的列的评估,在csv文件中创建并附加一列1、0和-1

Python 根据对其他几个预先存在的列的评估,在csv文件中创建并附加一列1、0和-1,python,pandas,numpy,csv,Python,Pandas,Numpy,Csv,我将上面的信号数据保存在一个csv文件中,我可以使用下面的代码将其拉入表示每列的numpy数组中: signal_1 signal_2 signal_3 signal_4 0 0 0 0 1 1 0 -1 1 1 0 -1 1 0 -1 -1 0 0 -

我将上面的信号数据保存在一个csv文件中,我可以使用下面的代码将其拉入表示每列的numpy数组中:

signal_1 signal_2 signal_3 signal_4
      0        0        0        0
      1        1        0       -1
      1        1        0       -1
      1        0       -1       -1
      0        0       -1       -1
If signal_1 and signal_2 == 1, then result == 1,
elIf signal_3 and signal_4 == -1, then result == -1,
else result == 0
我想根据如下逻辑附加第四列“Result”:

"Assign all the data from particular columns to a variable."  
signal_1 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(13,), skip_header=1, unpack=True)
signal_2 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(14,), skip_header=1, unpack=True)
signal_3 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(15,), skip_header=1, unpack=True)
signal_4 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(16,), skip_header=1, unpack=True)
signal_1 signal_2 signal_3 signal_4 result
      0        0        0        0      0
      1        1        0       -1      1
      1        1        0       -1      1
      1        0       -1       -1     -1
      0        0       -1       -1     -1
使用以下代码:

signal_1 signal_2 signal_3 signal_4
      0        0        0        0
      1        1        0       -1
      1        1        0       -1
      1        0       -1       -1
      0        0       -1       -1
If signal_1 and signal_2 == 1, then result == 1,
elIf signal_3 and signal_4 == -1, then result == -1,
else result == 0
而不是在正确的下面:

signal_1 signal_2 signal_3 signal_4 result
      0        0        0        0      0
      1        1        0       -1      0
      1        1        0       -1      0
      1        0       -1       -1      0
      0        0       -1       -1      0
您可以按如下方式使用:

"Assign all the data from particular columns to a variable."  
signal_1 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(13,), skip_header=1, unpack=True)
signal_2 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(14,), skip_header=1, unpack=True)
signal_3 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(15,), skip_header=1, unpack=True)
signal_4 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(16,), skip_header=1, unpack=True)
signal_1 signal_2 signal_3 signal_4 result
      0        0        0        0      0
      1        1        0       -1      1
      1        1        0       -1      1
      1        0       -1       -1     -1
      0        0       -1       -1     -1
或者,如果您尚未将df与所有信号系列组装在一起,也可以使用:

import numpy as np

df['result'] = np.select([(df['signal_1'] == 1) & (df['signal_2'] == 1),  (df['signal_3'] == -1) & (df['signal_4'] == -1)], [1, -1])
结果:

import numpy as np
df['result'] = np.select([signal_1 == 1) & (signal_2 == 1),  (signal_3 == -1) & (signal_4 == -1)], [1, -1])
您可以按如下方式使用:

"Assign all the data from particular columns to a variable."  
signal_1 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(13,), skip_header=1, unpack=True)
signal_2 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(14,), skip_header=1, unpack=True)
signal_3 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(15,), skip_header=1, unpack=True)
signal_4 = np.genfromtxt("%s.csv" % (i), delimiter=',', usecols=(16,), skip_header=1, unpack=True)
signal_1 signal_2 signal_3 signal_4 result
      0        0        0        0      0
      1        1        0       -1      1
      1        1        0       -1      1
      1        0       -1       -1     -1
      0        0       -1       -1     -1
或者,如果您尚未将df与所有信号系列组装在一起,也可以使用:

import numpy as np

df['result'] = np.select([(df['signal_1'] == 1) & (df['signal_2'] == 1),  (df['signal_3'] == -1) & (df['signal_4'] == -1)], [1, -1])
结果:

import numpy as np
df['result'] = np.select([signal_1 == 1) & (signal_2 == 1),  (signal_3 == -1) & (signal_4 == -1)], [1, -1])

谢谢你,海豆!第一个答案奏效了。@rnkim很乐意帮忙!请记住:-谢谢你,海豆!第一个答案奏效了。@rnkim很乐意帮忙!请记住:-