Pandas合并多列后转置为单行的实现问题求助
解决方案
你的问题核心是:pd.concat([df[0], df[1]])返回的是Series对象,而非DataFrame。对Series调用.T(转置)不会改变它的一维结构,所以输出还是单列形式。下面提供几种可行的解决方法:
方法1:将合并后的Series转为DataFrame再转置
先把合并后的Series转为单列DataFrame,再转置成单行,同时重置索引避免重复索引的干扰:
import pandas as pd df = pd.DataFrame( { 0: [1, 2, 3], 1: [11, 12, 13] } ) # 合并列 → 重置索引(丢弃原重复索引)→ 转为单列DataFrame → 转置 df_combined = pd.concat([df[0], df[1]]).reset_index(drop=True).to_frame().T print(df_combined)
输出:
0 1 2 3 4 5 0 1 2 3 11 12 13
方法2:用stack堆叠后转置
利用stack()方法将原DataFrame的列堆叠为Series,再转成单行DataFrame:
import pandas as pd df = pd.DataFrame( { 0: [1, 2, 3], 1: [11, 12, 13] } ) # 堆叠所有元素 → 重置索引 → 转为单列DataFrame → 转置 df_combined = df.stack().reset_index(drop=True).to_frame().T print(df_combined)
方法3:直接重塑数组形状(最简洁)
提取原DataFrame的底层数值数组,直接重塑为1行6列的结构,再创建新DataFrame:
import pandas as pd df = pd.DataFrame( { 0: [1, 2, 3], 1: [11, 12, 13] } ) # 提取值 → 重塑为(1, 所有元素数) → 创建DataFrame df_combined = pd.DataFrame(df.values.reshape(1, -1)) print(df_combined)
这种方法跳过了Series的中间步骤,效率更高,代码也更简洁。
内容的提问来源于stack exchange,提问作者yotta
相关产品推荐
相关产品推荐

