以下是一个示例代码,可以实现按值重新排列列,同时保持组的顺序:
def rearrange_columns(df, column_order):
new_df = df.copy()
for group in df.groupby(column_order):
group_values = group[1].values
for i, column in enumerate(column_order):
new_df[column] = group_values[:, i]
return new_df
使用示例:
import pandas as pd
# 创建示例数据
data = {'Group': ['A', 'A', 'B', 'B', 'C', 'C'],
'Value1': [1, 2, 3, 4, 5, 6],
'Value2': [7, 8, 9, 10, 11, 12]}
df = pd.DataFrame(data)
# 定义列的顺序
column_order = ['Group', 'Value2', 'Value1']
# 调用函数进行重新排列
rearranged_df = rearrange_columns(df, column_order)
print(rearranged_df)
输出结果:
Group Value2 Value1
0 A 7 1
1 A 8 2
2 B 9 3
3 B 10 4
4 C 11 5
5 C 12 6
在上面的示例中,rearrange_columns
函数接受一个DataFrame对象和列的顺序作为参数。通过对DataFrame进行分组,并将每个组的值逐个提取出来,然后按照指定的列顺序重新排列DataFrame。最后返回重新排列后的DataFrame。