pandas
的 melt
函数用于将 DataFrame 从宽格式转换为长格式。这对于数据重塑非常有用,尤其是在你需要将分类变量转换为观察值时。以下是 melt
函数的基本用法和参数说明:
基本用法
pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
frame
: 要转换的 DataFrame。id_vars
: 一个列名列表,这些列将保持不变,作为结果 DataFrame 的标识符。value_vars
: 一个列名列表,这些列将被“融化”成长格式。var_name
: 融化后的变量列名(即原来的列名)。value_name
: 融化后的值列名(即原来的值),默认为 ‘value’。col_level
: 如果列是 MultiIndex(多级索引),则指定要融化的级别。
示例
假设你有如下的 DataFrame:
import pandas as pd# 创建一个示例 DataFrame
df = pd.DataFrame({'product_id': [1, 2],'store1': [100, 200],'store2': [150, 250],'store3': [120, 220]
})print(df)
输出:
product_id store1 store2 store3
0 1 100 150 120
1 2 200 250 220
要使用 melt
函数将这个 DataFrame 转换为长格式,可以这样做:
# 将 DataFrame 从宽格式转换为长格式
melted_df = pd.melt(df, id_vars='product_id', var_name='store', value_name='price')print(melted_df)
输出:
product_id store price
0 1 store1 100
1 2 store1 200
2 1 store2 150
3 2 store2 250
4 1 store3 120
5 2 store3 220
在这个例子中,id_vars
设置为 'product_id'
,表示 product_id
列将保持不变。var_name
设置为 'store'
,表示原来的列名(store1
、store2
、store3
)将成为新 DataFrame 的 store
列的值。value_name
设置为 'price'
,表示原来的值将成为新 DataFrame 的 price
列的值。
通过这种方式,你可以将宽格式数据转换为长格式,以便于进行进一步的分析和处理。