如何将DataFrame各列值重复两次并并列展示?
解决方案
这里提供两种简洁的方法实现需求:
方法一:遍历列并复制拼接
通过循环遍历DataFrame的每一列,将原列与复制后的列(可自定义后缀)依次添加到新的DataFrame中:
import pandas as pd data = { 'id': [1], 'v_1': [103], 'v_2': [105], 'v_3': [102], } df = pd.DataFrame(data) new_df = pd.DataFrame() for col in df.columns: # 添加原列 new_df[col] = df[col] # 添加复制列,后缀可自定义(示例用_dup统一标识,也可改成你需要的11/22/31格式) new_df[f"{col}_dup"] = df[col] print(new_df)
输出结果:
id id_dup v_1 v_1_dup v_2 v_2_dup v_3 v_3_dup 0 1 1 103 103 105 105 102 102
如果需要和示例完全匹配的后缀(如v_1对应v_11),可以自定义后缀规则:
suffix_map = {'id': '1', 'v_1': '1', 'v_2': '2', 'v_3': '1'} new_df = pd.DataFrame() for col in df.columns: new_df[col] = df[col] new_df[f"{col}{suffix_map[col]}"] = df[col]
方法二:批量拼接后重排列序
先将原DataFrame与自身横向拼接,再重新排列列的顺序,让每一列的两个实例相邻,适合数据量较大的场景:
import pandas as pd data = { 'id': [1], 'v_1': [103], 'v_2': [105], 'v_3': [102], } df = pd.DataFrame(data) # 生成目标列顺序:每列重复两次并相邻 target_cols = [] for col in df.columns: target_cols.extend([col, f"{col}_dup"]) # 横向拼接两个df,再按目标列序重排 new_df = pd.concat([df, df], axis=1).reindex(columns=target_cols) print(new_df)
内容的提问来源于stack exchange,提问作者HbNIW NIW
相关产品推荐
相关产品推荐

