为何转置无效?无法将df.loc['Y']行合并至目标DataFrame
问题分析与解决方案
错误原因
你用df.loc['Y']提取的是Series对象(一维结构),而非DataFrame。直接将Series与df1执行pd.concat(axis=0)时,程序会把Series的索引(即原df的列名A、B)当作新行的索引,Series的值则被存入默认生成的0列,这就导致了索引和列名混乱的问题。另外transpose()对Series无效,因为它本身就是一维数据,转置后结构不会改变。
解决方法
只需把提取的行转换成保留原索引和列名的DataFrame即可,有两种简单方式:
方式1:将Series转置为单行DataFrame
# 提取行并转换为DataFrame row = df.loc['Y'].to_frame().T # 合并两个DataFrame result = pd.concat([df1, row], axis=0)
to_frame()先把Series转为以原行索引(Y)为列名的DataFrame,再用.T转置,得到以Y为行索引、A/B为列的单行DataFrame,concat时就能正确匹配结构。
方式2:直接提取为DataFrame
# 用双层方括号直接提取单行DataFrame row = df.loc[['Y']] # 合并 result = pd.concat([df1, row], axis=0)
双层方括号的索引方式会直接返回DataFrame,保留原有的行索引Y和列名A、B,无需额外转换,更简洁。
最终效果
合并后的结果会新增一行索引为Y的记录:列A值为2,列B值为5,原df1的M、N列在Y行位置显示NaN(因原行无对应数据),完全符合你的需求。
内容的提问来源于stack exchange,提问作者Sydney
相关产品推荐
相关产品推荐

