代码之家  ›  专栏  ›  技术社区  ›  Laurent Cesaro

Python数据帧重命名列与值的比较

  •  0
  • Laurent Cesaro  · 技术社区  · 3 年前

    使用Pandas,我试图用数据第一行的值重命名数据帧中未命名的列。

    我的数据帧:

    id 百货商店 未命名:1 未命名:2 windows 未命名:3 未命名:4
    0 B1 B2 B3 B1 B2 B3
    1. 2. c 12 15 15 14
    2. 4. d 35 14 14 87

    我想要的结果:

    id 商店_B1 商店_B3 商店_B2 窗口_B1 窗口_B2 窗口_B3
    0 B1 B2 B3 B1 B2 B3
    1. 2. c 12 15 15 14
    2. 4. d 35 14 14 87

    我不知道如何将列名与数据中的值相匹配。谢谢你的帮助。当做

    0 回复  |  直到 3 年前
        1
  •  4
  •   user17242583 user17242583    3 年前

    您可以使用 df.columns.where 制作 unnamed: 列NaN,然后将其转换为系列并使用 ffill :

    df.columns = pd.Series(df.columns.where(~df.columns.str.startswith('unnamed:'))).ffill() + np.where(~df.columns.isin(['id','col2']), ('_' + df.iloc[0].astype(str)).tolist(), '')
    

    输出:

    >>> df
       id store_B1 store_B2 store_B3 windows_B1 windows_B2 windows_B3
    0   0       B1       B2       B3         B1         B2         B3
    1   1        2        c       12         15         15         14
    2   2        4        d       35         14         14         87