Python中如何合并两列并按特定顺序重新排列数据?
问题描述
本人是Python新手,需要将CA1与CA2合并、CB1与CB2合并,并按照示例中展示的特定顺序重新排列数据。
原始数据集
| CA1 | CB1 | CA2 | CB2 | |
|---|---|---|---|---|
| 1 | A | 1.1 | B | 1.2 |
| 2 | C | 1.3 | D | 1.4 |
| 3 | E | 1.5 | F | 1.6 |
| 4 | G | 1.7 | H | 1.8 |
期望结果
| CA1 | CB1 | |
|---|---|---|
| 1 | A | 1.1 |
| 2 | B | 1.2 |
| 3 | C | 1.3 |
| 4 | D | 1.4 |
| 5 | E | 1.5 |
| 6 | F | 1.6 |
| 7 | G | 1.7 |
| 8 | H | 1.8 |
解决方案
使用pandas库可以快速实现需求,以下是两种可行方法:
方法一:列堆叠合并
import pandas as pd # 构造原始数据集 data = { 'CA1': ['A', 'C', 'E', 'G'], 'CB1': [1.1, 1.3, 1.5, 1.7], 'CA2': ['B', 'D', 'F', 'H'], 'CB2': [1.2, 1.4, 1.6, 1.8] } df = pd.DataFrame(data, index=[1,2,3,4]) # 将CA1/CA2、CB1/CB2分别转为长格式后提取值 ca_combined = pd.melt(df[['CA1', 'CA2']], value_name='CA1')['CA1'] cb_combined = pd.melt(df[['CB1', 'CB2']], value_name='CB1')['CB1'] # 组合成新数据集并重置索引 result_df = pd.DataFrame({'CA1': ca_combined, 'CB1': cb_combined}) result_df.index = range(1, len(result_df)+1) print(result_df)
方法二:重命名后拼接
import pandas as pd # 构造原始数据集 data = { 'CA1': ['A', 'C', 'E', 'G'], 'CB1': [1.1, 1.3, 1.5, 1.7], 'CA2': ['B', 'D', 'F', 'H'], 'CB2': [1.2, 1.4, 1.6, 1.8] } df = pd.DataFrame(data, index=[1,2,3,4]) # 将CA2/CB2重命名为CA1/CB1,再与原CA1/CB1行拼接 result_df = pd.concat([ df[['CA1', 'CB1']], df[['CA2', 'CB2']].rename(columns={'CA2':'CA1', 'CB2':'CB1'}) ], ignore_index=True) result_df.index = range(1, len(result_df)+1) print(result_df)
两种方法都能输出你需要的结果,可根据习惯选择。
内容的提问来源于stack exchange,提问作者Dhakshika
相关产品推荐
相关产品推荐

