在Pandas中,我们可以使用melt
函数进行将列名转换成行名/索引的操作。下面是具体的操作步骤:
- 读取数据源,将数据源存入DataFrame中
import pandas as pd
df = pd.read_csv('data.csv')
- 使用
melt
函数,将指定的列转换为行索引,剩余的列成为新的列名和值。
id_vars = ['col1'] # 指定要转换的列
value_vars = ['col2', 'col3'] # 要进行转换的列
var_name = 'new_col_name' # 转换后的新列名
value_name = 'new_value_name' # 转换后的新值名
df_melt = pd.melt(df, id_vars=id_vars, value_vars=value_vars, var_name=var_name, value_name=value_name)
其中:
df
:需要转换列的DataFrame;id_vars
:将要保留在列中的列名;value_vars
:需要被转换为新列和新值的列名;var_name
:转换后新列的列名名称,默认为variable
;value_name
:转换后新值的列名名称,默认为value
。
示例代码如下:
import pandas as pd
# 读取数据
df = pd.DataFrame({
'id': ['A', 'B', 'C'],
'sales_2021': [1200, 1500, 1000],
'sales_2020': [1000, 1300, 900],
})
# 显示原始数据
print('原始数据:')
print(df)
# 转换列名为行名
df_melt = pd.melt(df, id_vars=['id'], value_vars=['sales_2021', 'sales_2020'],
var_name='year', value_name='sales')
# 显示转换后的数据
print('\n列名转换为行名:')
print(df_melt)
输出结果如下:
原始数据:
id sales_2021 sales_2020
0 A 1200 1000
1 B 1500 1300
2 C 1000 900
列名转换为行名:
id year sales
0 A sales_2021 1200
1 B sales_2021 1500
2 C sales_2021 1000
3 A sales_2020 1000
4 B sales_2020 1300
5 C sales_2020 900
在转换过程中需要注意的是,被转换的列和保留的列都必须是数据类型一致的,否则会导致转换失败。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Pandas中把列名转换成行名/索引 - Python技术站