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