Pandas中将列名转为首行并添加新列头的实现问题
解决方法
要实现将原列名作为首行插入、其余行下移且不丢失数据的需求,可按以下步骤操作:
- 将原列名转为单行数据:把DataFrame的列名转换成一个单行的临时DataFrame,确保结构与原DataFrame一致。
- 拼接数据:将临时的列名行与原DataFrame纵向拼接,把列名行放在最前面。
- 修改列名:将新DataFrame的列名替换为目标名称。
- 重置索引:确保索引连续无重复。
完整代码示例
import numpy as np import pandas as pd # 生成原始DataFrame df = pd.DataFrame(np.random.randint(0,3,size=(3, 4)), columns=list('1234')) # 把原列名转为单行DataFrame header_df = pd.DataFrame([df.columns.values], columns=df.columns) # 拼接列名行与原数据,ignore_index=True重置索引 df_updated = pd.concat([header_df, df], ignore_index=True) # 修改列名为目标值 df_updated.columns = ["A", "B", "C", "D"] print(df_updated)
输出结果
A B C D 0 1 2 3 4 1 1 1 0 1 2 2 1 1 1 3 0 0 1 2
说明
你之前的代码仅修改了列名,没有将原列名作为行插入到数据中,因此无法得到期望结果。上述方法通过拼接操作补充了首行的列名数据,同时完整保留了所有原始行数据。
内容的提问来源于stack exchange,提问作者Saad Hasan
相关产品推荐
相关产品推荐

