Python 数据框重命名列与值相比

Python Dataframe rename column compared to value

使用 Pandas 我正在尝试使用数据第一行上的值重命名数据框中未命名的列。

我的数据框:

id store unnamed: 1 unnamed: 2 windows unnamed: 3 unnamed: 4
0 B1 B2 B3 B1 B2 B3
1 2 c 12 15 15 14
2 4 d 35 14 14 87

我想要的结果:

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

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

您可以使用 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