You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个DataFrame中选择拼接列?代码运行后得到空DataFrame求解

问题分析与修正

你的代码存在几个关键问题,导致输出空DataFrame:

1. 循环变量未初始化

代码中直接使用while i < len(df1.columns),但变量i从未被赋值,循环根本不会执行,df4自然保持初始空状态。

2. pd.concat参数错误

pd.concat需要接收一个DataFrame的列表作为参数,而你传入了两个独立的DataFrame,正确写法是pd.concat([df4, df3])。

3. 列名映射逻辑错误

你错误地重命名了行索引,但实际需求是把每组的3列(比如Column1-3)对应重命名为Letters、Numbers、RomanNumerals,然后将这些组的行纵向拼接。

修正后的代码

import pandas as pd

df1 = pd.DataFrame({'Column1': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
                   'Column2': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   'Column3': ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'],
                   'Column4': [pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA],
                   'Column5': ['K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T'],
                   'Column6': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
                   'Column7': ['XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'],
                   'Column8': [pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA, pd.NA],
                   'Column9': ['U', 'V', 'W', 'X', 'Y', 'Z', '', '', '', ''],
                   'Column10': [21, 22, 23, 24, 25, 26, pd.NA, pd.NA, pd.NA, pd.NA],
                   'Column11': ['XXI', 'XXII', 'XXIII', 'XXIV', 'XXV', 'XXVI', '', '', '', '']})

column_names = ['Letters', 'Numbers', 'RomanNumerals']
df4 = pd.DataFrame(columns=column_names)

i = 0  # 初始化循环变量
while i < len(df1.columns):
    # 取每组3列
    df2 = df1.iloc[:, i:i+3]
    # 重命名列名
    df2.columns = column_names
    # 过滤掉全空/空字符串的无效行
    df2 = df2.dropna(how='all').replace('', pd.NA).dropna(how='all')
    # 拼接DataFrame
    df4 = pd.concat([df4, df2], ignore_index=True)
    i += 4  # 跳过空列,步进4

print(df4)

输出结果

Letters Numbers RomanNumerals
0        A       1             I
1        B       2            II
2        C       3           III
3        D       4            IV
4        E       5             V
5        F       6            VI
6        G       7           VII
7        H       8          VIII
8        I       9            IX
9        J      10             X
10       K      11            XI
11       L      12           XII
12       M      13          XIII
13       N      14           XIV
14       O      15            XV
15       P      16           XVI
16       Q      17          XVII
17       R      18         XVIII
18       S      19           XIX
19       T      20            XX
20       U      21           XXI
21       V      22          XXII
22       W      23         XXIII
23       X      24          XXIV
24       Y      25           XXV
25       Z      26          XXVI

内容的提问来源于stack exchange,提问作者Timeless

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:54:33