Python 根据对其他几个预先存在的列的评估,在csv文件中创建并附加一列1、0和-1
我将上面的信号数据保存在一个csv文件中,我可以使用下面的代码将其拉入表示每列的numpy数组中: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 -
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很乐意帮忙!请记住:-