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
使用 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