试图将以下数据融为一体,结果是4行--一列用于"John-1“,包含他的前数据,一行用于"John-2”,其中一行包含他的后数据,一行用于"Kelly-1“,在数据之前包含她,一行用于"Kelly-2”,其中一列包含她的后数据。列将是“名称”、“重量”和“高度”。这能仅用熔融函数来完成吗?
df = pd.DataFrame({'Name': ['John', 'Kelly'],
'Weight Before': [200, 175],
'Weight After': [195, 165],
'Height Before': [6, 5],
'Height After': [7, 6]})发布于 2022-06-13 18:51:50
使用pandas.wide_to_long函数如下所示:
pd.wide_to_long(df, ['Weight', 'Height'], 'Name', 'grp', ' ', '\\w+').reset_index()
Name grp Weight Height
0 John Before 200 6
1 Kelly Before 175 5
2 John After 195 7
3 Kelly After 165 6或者您也可以从pyjanitor中使用pivot_longer,如下所示:
import janitor
df.pivot_longer('Name', names_to = ['.value', 'grp'], names_sep = ' ')
Name grp Weight Height
0 John Before 200 6
1 Kelly Before 175 5
2 John After 195 7
3 Kelly After 165 6https://stackoverflow.com/questions/72607710
复制相似问题