如何在Python中交换DataFrame列中每两组相邻值?
解决DataFrame列相邻值交换的问题
针对你遇到的bowler pca列值错位问题,需要交换每两个相邻元素的位置,可以用以下两种简单方法实现:
方法一:利用pandas的索引切片与shift
假设你的DataFrame名为df,目标列是bowler_pca,可以通过条件判断和位移操作直接交换相邻值:
import pandas as pd # 提取目标列 target_col = df['bowler_pca'] # 偶数索引位置取后一个值,奇数索引位置保留原值,最后一行特殊处理 df['bowler_pca'] = target_col.where( target_col.index % 2 != 0, target_col.shift(-1) ).fillna(target_col.iloc[-1])
方法二:利用numpy的reshape重组数组
如果数据量较大,numpy的数组操作效率更高:
import numpy as np # 把列值转为numpy数组 pca_values = df['bowler_pca'].values # 分情况处理偶数/奇数长度的数组 if len(pca_values) % 2 == 0: # 偶数长度:重组为二维数组后交换列,再展平 pca_values = pca_values.reshape(-1, 2)[:, [1, 0]].flatten() else: # 奇数长度:处理前n-1个元素,保留最后一个元素不变 pca_values = np.concatenate([ pca_values[:-1].reshape(-1, 2)[:, [1, 0]].flatten(), [pca_values[-1]] ]) # 将交换后的数组赋值回DataFrame df['bowler_pca'] = pca_values
两种方法都能实现第1与第2个值交换、第3与第4个值交换的效果,解决你提到的队伍与bowler pca值错位的问题。
内容的提问来源于stack exchange,提问作者user19600572
相关产品推荐
相关产品推荐

