【问题标题】:Concatenate 1st Column values with column headers in Pandas to get a tall and skinny format tabel将第一列值与 Pandas 中的列标题连接起来,得到一个又高又瘦的格式表
【发布时间】:2021-03-12 22:33:19
【问题描述】:
我想将第一列值与列标题连接起来,以使用 pandas 获得一个又高又瘦的格式表。
例如 - 输入是
Freq Low High
B1 19 22
B2 20 23
我正在寻找的预期输出是
Freq value
B1_Low 19
B1_High 22
B2_Low 20
B2_High 23
【问题讨论】:
标签:
python
pandas
dataframe
numpy
combinations
【解决方案1】:
您可以使用melt,然后连接产生的频率和变量列。
df = df.melt(id_vars='Freq')
df['Freq'] = df['Freq'].str.cat(df['variable'], sep='_')
print(df[['Freq','value']])
输出
Freq value
0 B1_Low 19
1 B2_Low 20
2 B1_High 22
3 B2_High 23
【解决方案2】:
您可以在索引上使用.stack(),然后使用.get_level_values():
df = df.set_index('Freq').T.stack()
df = pd.DataFrame({'value':df.values}, index=(df.index.get_level_values(1) + '_' + df.index.get_level_values(0)) )
print(df)
打印:
value
B1_Low 19
B2_Low 20
B1_High 22
B2_High 23