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

存在重复列名时拆分Pandas DataFrame的方法咨询

解决重复列名DataFrame拆分问题

嘿,这个重复列名的拆分问题我碰到过,给你几个实用的解决办法,都能避开你说的那些坑:

方案1:按列位置索引拆分(最直接)

既然列名重复,但每列的位置是唯一的,直接用iloc按位置取列就完全不会受重复列名的影响,之后再用copy()也没问题:

# 拆分前4列和后4列
df1 = dataframe_1.iloc[:, :4].copy()
df2 = dataframe_1.iloc[:, 4:].copy()

# 可选:给新DataFrame重命名列,避免后续操作混淆
df1.columns = ['A_first', 'A_second', 'A_third', 'A_fourth']
df2.columns = ['B_first', 'B_second', 'B_third', 'B_fourth']

解释:iloc[:, :4]直接取前4列,iloc[:, 4:]取第5到第8列,完全不依赖列名,自然不会有重复列名导致的问题。重命名列是为了后续操作更清晰,避免再次遇到重复列名的麻烦。

方案2:创建DataFrame时直接指定不重复列名

从根源上解决重复列名的问题,在把二维数组转成DataFrame的时候,就给第二组列名加上区分标识:

import pandas as pd

# 定义带区分的列名,替换原来的重复列名
custom_columns = [
    'A_first', 'A_second', 'A_third', 'A_fourth',
    'B_first', 'B_second', 'B_third', 'B_fourth'
]

# 转换为DataFrame时直接指定列名
dataframe_1 = pd.DataFrame(arrayFull, columns=custom_columns)

# 现在拆分就简单了,直接按列名选取
df1 = dataframe_1[['A_first', 'A_second', 'A_third', 'A_fourth']].copy()
df2 = dataframe_1[['B_first', 'B_second', 'B_third', 'B_fourth']].copy()

解释:这样创建出来的DataFrame本身就没有重复列名,后续的拆分和copy()操作都能正常进行,完全避开了重复列名的问题。

方案3:基于列名列表切片拆分(保留原列名)

如果你一定要保留原来的重复列名,也可以通过列名列表的切片来选取:

# 获取所有列名的列表
all_columns = dataframe_1.columns

# 取前4个列名(即使重复)
df1 = dataframe_1[all_columns[:4]].copy()
# 取后4个列名
df2 = dataframe_1[all_columns[4:]].copy()

解释:all_columns[:4]是前4个列名的列表(虽然有重复),用这个列表去索引DataFrame,会精确选取对应位置的列,而不是所有同名列,所以copy()也能正常工作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:58:01