Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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 能否使用其他列表/集合中的值在数据帧中指定计算列?_Python_Pandas_Dataframe - Fatal编程技术网

Python 能否使用其他列表/集合中的值在数据帧中指定计算列?

Python 能否使用其他列表/集合中的值在数据帧中指定计算列?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个这样格式的数据框,通过旋转excel文件生成: Gene Ref y z Sample 1 29.2877 29.0625 20.9868 2 29.9897 32.8044 25.8783 3 31.6335 34.7172 24.6268 我想使用列ref和y执行计算,然后使用列ref和z

我有一个这样格式的数据框,通过旋转excel文件生成:

Gene             Ref      y       z
Sample                                 
1             29.2877  29.0625  20.9868
2             29.9897  32.8044  25.8783
3             31.6335  34.7172  24.6268
我想使用列ref和y执行计算,然后使用列ref和z生成两个新列。我知道如何单独执行这些操作,但我希望能够根据前面生成的多个_columns=len(list)对象指定需要计算多少列(y、z…等等)。理想情况下,我还希望新列的名称取自之前生成的另一个集合。我总是将ref列作为第一列,所以我尝试了以下方法:

while number_of_columns != 0:
    for column in df[(number_of_columns + 2)].iteritems():
        df[set_of_names_of_new_columns] = df.(names_of_columns_to_use) + df[ref_column]
        number_of_columns -= 1
显然,这不起作用,但我把它放进去,以显示我的想法。这也不是计算,只是在这里简化了


非常感谢任何帮助

如果df不是太宽,那么简单的for-loop方法可以很好地工作,因为每个列操作都是矢量化的。只需通过编程(通过名称而不是索引值)识别您感兴趣的引用行和列:

结果:

Gene          Ref        y        z     output_y    output_z
Sample
1         29.2877  29.0625  20.9868   851.173781  614.655102
2         29.9897  32.8044  25.8783   983.794115  776.082454
3         31.6335  34.7172  24.6268  1098.226546  779.031878

预期产量?您能将其复制到您的问题中吗?另外,请包括:
要使用的列的名称
+
ref\u列
,以使其重现。请提供一个,以及当前和预期的输出。看,太棒了!非常感谢你!我花了整整一个下午的时间试着这么做!
Gene          Ref        y        z     output_y    output_z
Sample
1         29.2877  29.0625  20.9868   851.173781  614.655102
2         29.9897  32.8044  25.8783   983.794115  776.082454
3         31.6335  34.7172  24.6268  1098.226546  779.031878