如何将DataFrame指定行拆分后导入空DataFrame对应列?
Pandas实现将指定行拆分为多行并交替存入DataFrame的A/B列
方案1:按行对匹配A、B列(一一对应)
如果你需要将原DataFrame的特定行两两配对,把每对中的第一行拆分为df2的A列多行,第二行拆分为B列多行(每行的10个值对应成10行),可以用以下代码:
import pandas as pd import numpy as np # 构造示例原DataFrame(10列15行) df = pd.DataFrame(np.arange(150).reshape(15,10), columns=[f'col{i}' for i in range(10)]) # 定义行配对规则:(A列对应的行索引, B列对应的行索引),可根据需求修改 row_pairs = [(0, 2), (3, 5), (6, 8), (9, 11), (12, 14)] df_list = [] for a_row, b_row in row_pairs: # 提取指定行的所有值,转为单列数组 col_a = df.loc[a_row].values.reshape(-1, 1) col_b = df.loc[b_row].values.reshape(-1, 1) # 合并为临时DataFrame,添加到列表 temp_df = pd.DataFrame(np.hstack([col_a, col_b]), columns=['A', 'B']) df_list.append(temp_df) # 合并所有临时DataFrame得到最终df2 df2 = pd.concat(df_list, ignore_index=True)
代码说明:
row_pairs可自定义调整,比如你需要第0行对应A、第2行对应B,第3行对应A、第5行对应B,直接按这个格式添加配对即可。- 每一对行的10个值会被拆成10行,
A和B列的每行一一对应。
方案2:按顺序交替分配行到A/B列
如果你的规则是跳过某些行后,剩余行按顺序交替存入A、B列(比如第0行→A,第2行→B,第3行→A,第5行→B...),可以用以下代码:
import pandas as pd import numpy as np df = pd.DataFrame(np.arange(150).reshape(15,10), columns=[f'col{i}' for i in range(10)]) # 筛选需要处理的行索引(这里跳过行1,可根据需求修改) target_rows = [i for i in df.index if i != 1] a_values = [] b_values = [] # 遍历目标行,交替存入A、B列表 for idx, row_idx in enumerate(target_rows): row_data = df.loc[row_idx].tolist() if idx % 2 == 0: a_values.extend(row_data) else: b_values.extend(row_data) # 构造df2,长度不一致时自动用NaN填充 df2 = pd.DataFrame({'A': a_values, 'B': b_values})
代码说明:
target_rows可调整筛选条件,比如你想跳过更多行,直接修改列表生成逻辑即可。- 交替逻辑通过
idx % 2判断,偶数位的目标行存入A,奇数位存入B。 - 如果
A和B的长度不同,短的列会自动用NaN填充缺失值。
内容的提问来源于stack exchange,提问作者Mencio
相关产品推荐
相关产品推荐

