pandas的melt方法使用
Pandas 的 melt
方法用于将宽格式(wide format)的 DataFrame 转换为长格式(long format)的 DataFrame。这种转换在数据处理和可视化中非常有用,尤其是在处理多列数据时。
宽格式 vs 长格式
- 宽格式(Wide Format):每一列代表一个变量,每一行代表一个观测值。
- 长格式(Long Format):每一行代表一个变量的一个观测值,变量名和值分别存储在两列中。
melt
方法的主要参数包括:
id_vars
:指定哪些列保持不变(即不进行转换)。value_vars
:指定哪些列需要转换(默认是除了id_vars
之外的所有列)。var_name
:指定变量名列的名称(默认是'variable'
)。value_name
:指定值列的名称(默认是'value'
)。
import pandas as pddata = {'Name': ['Alice', 'Bob', 'Charlie'],'Math': [85, 90, 78],'Science': [92, 88, 85],'English': [88, 95, 90]
}
df = pd.DataFrame(data) # 宽表
print(df)
使用melt
转为长格式:
df_melted = df.melt(id_vars=['Name'], var_name='Subject', value_name='Score')
1795. 每个产品在不同商店的价格 - 力扣(LeetCode)
请你重构
Products
表,查询每个产品在不同商店的价格,使得输出的格式变为(product_id, store, price)
。如果这一产品在商店里没有出售,则不输出这一行。输出结果表中的 顺序不作要求 。
解题思路:使用melt
将宽表转为长表的基础操作:
import pandas as pddef rearrange_products_table(products: pd.DataFrame) -> pd.DataFrame:return products.melt(id_vars=['product_id'], var_name='store',value_name='price').dropna()