Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pandas中使用列的操作_Python_Pandas - Fatal编程技术网

Python 在pandas中使用列的操作

Python 在pandas中使用列的操作,python,pandas,Python,Pandas,我有一个df,看起来像这样: I_0 I_1 I_2 10 20 30 SF q 0 2 3 4 5 1 1 0.2 1 5 4 3 4 7 8 0.3 2 4 8 7 9 8 7 0.4 我想对其进行操作,例如: 将第10、20和30列乘以SF 从I_0、I_1和I_2中减去这些新列 例如: I_0 - (column 10 * SF) I_1 - (column 20 * SF) I_2 - (column 30 * S

我有一个df,看起来像这样:

   I_0 I_1 I_2 10 20 30 SF
q
0    2   3   4  5  1  1 0.2
1    5   4   3  4  7  8 0.3
2    4   8   7  9  8  7 0.4
我想对其进行操作,例如:

  • 将第10、20和30列乘以SF
  • 从I_0、I_1和I_2中减去这些新列
例如:

I_0 - (column 10 * SF)
I_1 - (column 20 * SF)
I_2 - (column 30 * SF)
然后将计算列重命名为I_0_sub、I_1_sub和I_2_sub

到目前为止,我已经尝试过:

df = pd.merge(df1, df2, how = "left", left_index = True, right_index = True)
df["SF"] = df["I_q_2"] / df[10]
test = df.subtract(df2*SF, axis=0)
test.drop(labels=["10", "20", "30", "SF"], axis = "columns", inplace = True)
test = test.add_suffix("_sub")
让NaN加入df

如有任何帮助,将不胜感激。

用于选择列,以
I
开头:

df1 = df.filter(regex='^I')
print (df1)
   I_0  I_1  I_2
q               
0    2    3    4
1    5    4    3
2    4    8    7
然后按子集选择列,并按以下方式选择多个列:

最后一个减法-但列不同,因此将值转换为
numpy数组

df = df1.sub(df2.values, 0).add_suffix('_sub')
print (df)
   I_0_sub  I_1_sub  I_2_sub
q                           
0      1.0      2.8      3.8
1      3.8      1.9      0.6
2      0.4      4.8      4.2
如果两个
df
get
NaN
s中的列名称不相同,因为数据未对齐:

print (df1.sub(df2, axis=0))
   10  20  30  I_0  I_1  I_2
q                           
0 NaN NaN NaN  NaN  NaN  NaN
0 NaN NaN NaN  NaN  NaN  NaN
2 NaN NaN NaN  NaN  NaN  NaN
用于选择列,以
I
开头:

df1 = df.filter(regex='^I')
print (df1)
   I_0  I_1  I_2
q               
0    2    3    4
1    5    4    3
2    4    8    7
然后按子集选择列,并按以下方式选择多个列:

最后一个减法-但列不同,因此将值转换为
numpy数组

df = df1.sub(df2.values, 0).add_suffix('_sub')
print (df)
   I_0_sub  I_1_sub  I_2_sub
q                           
0      1.0      2.8      3.8
1      3.8      1.9      0.6
2      0.4      4.8      4.2
如果两个
df
get
NaN
s中的列名称不相同,因为数据未对齐:

print (df1.sub(df2, axis=0))
   10  20  30  I_0  I_1  I_2
q                           
0 NaN NaN NaN  NaN  NaN  NaN
0 NaN NaN NaN  NaN  NaN  NaN
2 NaN NaN NaN  NaN  NaN  NaN