希望通过pandas同时对数据行列进行转置,使用pandas从数据读取数据方式:
import pandas as pd
from sqlalchemy import create_engine
sql = """
SELECT ts_code,end_date,revenue,oper_cost
FROM income where ts_code ='600002.SH' LIMIT 20
"""
df = pd.read_sql_query(sql, engine_ts)
从数据库读出来的原始数据格式:
ts_code | end_date | revenue | oper_cost |
---|---|---|---|
600002.SH | 20150930 | 539 | 434 |
600002.SH | 20150630 | 362 | 291 |
600002.SH | 20141231 | 768 | 608 |
600002.SH | 20150331 | 161 | 129 |
想转换成如下格式:
ts_code | ITEM | 20150930 | 20150630 | 20141231 | 20150331 |
---|---|---|---|---|---|
600007.SH | revenue | 539 | 362 | 768 | 161 |
600007.SH | oper_cost | 434 | 291 | 608 | 129 |
尝试过转置,但技术不行,以下代码,失败告终。
df = df.set_index(['revenue', 'oper_cost']) # 列转行
df = df.stack()
df.index = df.index.rename('temp_col1', level=2)
df.name = 'temp_col2'
df = df.reset_index()
df = df.set_index(['temp_col1', 'temp_col2']) # 行转列
df = df.unstack("temp_col2")
df = df.reset_index()