【问题标题】:Changing df column name while leaving default columns as a row更改 df 列名,同时将默认列保留为一行
【发布时间】:2022-01-20 14:58:22
【问题描述】:

我有 2 个如下所示的数据框(首先是 df):

Index Date Detail Amount
0 2001/01/21 AAA 1
1 2001/01/22 BBB 2
2 2001/01/23 CCC 3

第二个是df_2:

Index 2001/01/24 DDD 4
0 2001/01/25 EEE 5
1 2001/01/26 FFF 6

我从中提取信息的系统将数据拆分为 2 个单独的 Excel 表/选项卡。但是,df_2 中的信息没有像 df 中的信息一样被赋予任何列名。我需要将它们连接起来,但是,如果我在 .loc[0] 中插入一个空的信息行,然后将这个空信息修改为 df 中的正确列,这将不起作用,因为列已经设置。

如果我尝试替换或重命名 df_2 中的列,这将迫使我丢失 df_2 中我需要的第一列中的信息。

我将如何保留 df_2 中的第一行,同时为其赋予与 df 中相同的列名以连接两个数据帧? df_2 的结果需要看起来像这样:

Index Date Detail Amount
0 2001/01/24 DDD 4
1 2001/01/25 EEE 5
2 2001/01/26 FFF 6

接下来,我可以简单地说:

pd.concat([df,df_2])

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你需要玩set_index/reset_indextranspose

    (df_2
     .drop(columns='Index')      # drop Index column
     .T.reset_index()            # reset column header
     .set_index(df.columns[1:])  # set names
     .T
     .reset_index(drop=True)     # drop old index
     .rename_axis('Index')       # set new index name 
     .reset_index()              # set new index as column
    )
    

    输出:

       Index        Date  Detail  Amount
    0      0  2001/01/24     DDD       4
    1      1  2001/01/25     EEE       5
    2      2  2001/01/26     FFF       6
    

    【讨论】:

    • 当我尝试删除索引时出现以下错误:KeyError: "['Index'] not found in axis"。我想我应该补充一点,索引列实际上并不是一个列——它只是一个索引。我把它放在那里只是为了完整性。
    • 谢谢 - 让它工作!最终代码如下:df_2_transposed = df_2.T.reset_index().set_index(df.columns[0:])df_2_final = df_2_transposed.T.reset_index(drop=True)
    猜你喜欢
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2018-10-24
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多