Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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_Numpy - Fatal编程技术网

Python 将每对列彼此分开

Python 将每对列彼此分开,python,pandas,numpy,Python,Pandas,Numpy,我希望将每一对连续的列分开,然后重新填充计算值。例如,我有下面的数据框。在下面的数据框中,我想将B/A和D/C分开。然后B/A的结果应该重新填充在B列中,D/C的结果应该填充在D列中 请注意,我的实际数据帧非常大。它有86列。我更希望有一个自动化的方案,它可以在所有列(86列)中循环,更改43列中的值,或者有一个内置的函数来执行此操作 A B C D 0 2.056494 -3.002088 0.51682

我希望将每一对连续的列分开,然后重新填充计算值。例如,我有下面的数据框。在下面的数据框中,我想将B/A和D/C分开。然后B/A的结果应该重新填充在B列中,D/C的结果应该填充在D列中

请注意,我的实际数据帧非常大。它有86列。我更希望有一个自动化的方案,它可以在所有列(86列)中循环,更改43列中的值,或者有一个内置的函数来执行此操作

       A            B           C           D
0   2.056494    -3.002088   0.516822    -1.338846
1   0.082295    1.387734    -0.495226   1.119553
2   0.298618    -0.130158   0.804705    -0.120110
3   0.178088    1.137238    1.331856    -0.472720
4   -0.378670   1.649041    -0.240723   2.044113
5   3.602587    1.152502    -0.170646   -0.961922
6   -0.285846   -0.154891   1.492879    0.752487
7   -0.412809   1.076796    -2.001025   -0.954021
感谢阅读本文并感谢您的帮助。

您可以使用.iloc对其他列进行切片,然后使用.values删除两个轴上的索引,以便正确对齐:

>>> df.iloc[:, 1::2] /= df.iloc[:, ::2].values
>>> df
          A          B         C         D
0  2.056494  -1.459809  0.516822 -2.590536
1  0.082295  16.862920 -0.495226 -2.260691
2  0.298618  -0.435868  0.804705 -0.149260
3  0.178088   6.385820  1.331856 -0.354933
4 -0.378670  -4.354823 -0.240723 -8.491557
5  3.602587   0.319910 -0.170646  5.636944
6 -0.285846   0.541869  1.492879  0.504051
7 -0.412809  -2.608461 -2.001025  0.476766
.iloc允许我们使用标准Python切片按位置索引:

>>> df.iloc[:, 1::2]
           B         D
0  -1.459809 -2.590536
1  16.862920 -2.260691
2  -0.435868 -0.149260
3   6.385820 -0.354933
4  -4.354823 -8.491557
5   0.319910  5.636944
6   0.541869  0.504051
7  -2.608461  0.476766
如果没有.values,我们仍然有列名,这将给我们

>>> df.iloc[:, 1::2] / df.iloc[:, ::2] 
    A   B   C   D
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN
5 NaN NaN NaN NaN
6 NaN NaN NaN NaN
7 NaN NaN NaN NaN
可以使用.iloc对其他列进行切片,然后使用.values删除两个轴上的索引,以便正确对齐:

>>> df.iloc[:, 1::2] /= df.iloc[:, ::2].values
>>> df
          A          B         C         D
0  2.056494  -1.459809  0.516822 -2.590536
1  0.082295  16.862920 -0.495226 -2.260691
2  0.298618  -0.435868  0.804705 -0.149260
3  0.178088   6.385820  1.331856 -0.354933
4 -0.378670  -4.354823 -0.240723 -8.491557
5  3.602587   0.319910 -0.170646  5.636944
6 -0.285846   0.541869  1.492879  0.504051
7 -0.412809  -2.608461 -2.001025  0.476766
.iloc允许我们使用标准Python切片按位置索引:

>>> df.iloc[:, 1::2]
           B         D
0  -1.459809 -2.590536
1  16.862920 -2.260691
2  -0.435868 -0.149260
3   6.385820 -0.354933
4  -4.354823 -8.491557
5   0.319910  5.636944
6   0.541869  0.504051
7  -2.608461  0.476766
如果没有.values,我们仍然有列名,这将给我们

>>> df.iloc[:, 1::2] / df.iloc[:, ::2] 
    A   B   C   D
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN
5 NaN NaN NaN NaN
6 NaN NaN NaN NaN
7 NaN NaN NaN NaN