python pandas 长表格转换为宽表格/宽表格转换为长表格

目的如题目,长宽表格转换,即长表格转换为宽表格/宽表格转换为长表格,采用pivot和melt函数操作。关于该方法和stack和unstack的区别可以查看Python Pandas DataFrame stack(), unstack(), pivot(), melt()操作

1. 首先是长表格转变为宽表格,采用pivot方法
import pandas as pd
df = pd.read_csv('file.csv', header=0, encoding="utf-8")
df = df[['city', 'indus', 'rca']]
df.head(5)
Out[24]: 
   city            indus        rca
0  七台河市    农、林、牧、渔专用机械制造  14.065711
1  七台河市         其他未列明制造业   3.319898
2  七台河市         其他农副食品加工   5.008873
3  七台河市          屠宰及肉类加工   4.169150
4  七台河市             谷物磨制  11.849164

原始数据如下,想要得到city作为行,indus作为列,rca作为值的矩阵,操作如下,

df_wide = df.pivot(index='city', columns='indus', values='rca')
df_wide.head(5)
Out[27]: 
indus    专用仪器仪表制造    专用化学产品制造     专用设备修理  ...     饲料加工    麻纺织及染整精加工    黑色金属铸造
city                                      ...                                
七台河市          NaN         NaN        NaN  ...      NaN          NaN       NaN
三亚市           NaN         NaN        NaN  ...      NaN          NaN       NaN
三明市           NaN    0.910718        NaN  ...      NaN          NaN  4.251723
三门峡市          NaN    2.558684  14.563470  ...      NaN          NaN       NaN
上海市           NaN    0.047433   0.809939  ...  0.10094          NaN       NaN
[5 rows x 175 columns]

通用范式为 df.pivot(index='index_label', columns='column_label', values='value_label')

2. 其次是宽表格变为长表格,采用melt方法

针对上述的df,操作如下

df_long = df.melt(id_vars=['city'],value_vars=['rca'])
df_long.head(5)
Out[33]: 
   city variable      value
0  七台河市      rca  14.065711
1  七台河市      rca   3.319898
2  七台河市      rca   5.008873
3  七台河市      rca   4.169150
4  七台河市      rca  11.849164

可以看出,最后的dataframe的列的值是原来的column的具体数值。

今日份水文完毕,主要目的是为了第一个长转宽。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容