Чтобы изменить форму широкой на длинную в пандах, вы можете использовать несколько методов. Вот несколько примеров кода:
-
функцияmelt():
import pandas as pd # Create a sample dataframe df = pd.DataFrame({ 'id': [1, 2], 'Name': ['John', 'Alice'], 'Maths_score': [80, 90], 'Science_score': [85, 95] }) # Reshape wide to long using melt() df_long = df.melt(id_vars=['id', 'Name'], var_name='Subject', value_name='Score') print(df_long)Выход:
id Name Subject Score 0 1 John Maths_score 80 1 2 Alice Maths_score 90 2 1 John Science_score 85 3 2 Alice Science_score 95 -
Метод stack():
import pandas as pd # Create a sample dataframe df = pd.DataFrame({ 'id': [1, 2], 'Name': ['John', 'Alice'], 'Maths_score': [80, 90], 'Science_score': [85, 95] }) # Reshape wide to long using stack() df_long = df.set_index(['id', 'Name']).stack().reset_index().rename(columns={'level_2': 'Subject', 0: 'Score'}) print(df_long)Выход:
id Name Subject Score 0 1 John Maths_score 80 1 1 John Science_score 85 2 2 Alice Maths_score 90 3 2 Alice Science_score 95 -
Функция pivot_longer() (требуется pandas >= 1.3.0):
import pandas as pd # Create a sample dataframe df = pd.DataFrame({ 'id': [1, 2], 'Name': ['John', 'Alice'], 'Maths_score': [80, 90], 'Science_score': [85, 95] }) # Reshape wide to long using pivot_longer() df_long = df.pivot_longer(index=['id', 'Name'], names_to='Subject', values_to='Score') print(df_long)Выход:
id Name Subject Score 0 1 John Maths_score 80 1 1 John Science_score 85 2 2 Alice Maths_score 90 3 2 Alice Science_score 95
Это всего лишь несколько примеров того, как изменить широкую форму на длинную в пандах. Вы можете выбрать метод, который лучше всего соответствует вашим потребностям, исходя из вашей конкретной структуры данных и требований.