有一组数据想要变成表格那样读取
[('2000', [153,187,234,212,300,221,201,175,123,104,85,78]),
('2001', [134,175,243,227,298,256,234,165,124,106,87,74]),
('2002', [145,203,189,214,295,220,231,174,119,85,67,75]),
('2003', [117,178,149,178,248,202,162,135,120,96,90,63]),
]
使用pandas库里面的DataFrame函数进行分列
import pandas as pd
data = [('2000', [153,187,234,212,300,221,201,175,123,104,85,78]),
('2001', [134,175,243,227,298,256,234,165,124,106,87,74]),
('2002', [145,203,189,214,295,220,231,174,119,85,67,75]),
('2003', [117,178,149,178,248,202,162,135,120,96,90,63]),
]
df = pd.DataFrame(data, columns=['Year', 'Sales'])
df['Month'] = range(1, 13)
df_final = df.pivot(index='Month', columns='Year', values='Sales')
df_final.columns.name = None # 移除列索引的名称
print(df_final)
然后遇到报错ValueError: Length of values does not match length of index
报错指示的是这行出的错
df['Month'] = range(1, 13)
然后我换了一种方法,用了numpy库的
import numpy as np
import pandas as pd
# 使用NumPy创建销售数据的多维数组
sales_data = np.array([
[153, 187, 234, 212, 300, 221, 201, 175, 123, 104, 85, 78],
[134, 175, 243, 227, 298, 256, 234, 165, 124, 106, 87, 74],
[145, 203, 189, 214, 295, 220, 231, 174, 119, 85, 67, 75],
[117, 178, 149, 178, 248, 202, 162, 135, 120, 96, 90, 63]
])
# 创建年份标签
years = ['2000', '2001', '2002', '2003']
# 创建月份标签
months = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']
# 创建DataFrame
df = pd.DataFrame(sales_data, columns=months, index=years)
# 打印结果
print(df)
得到
01 02 03 04 05 06 07 08 09 10 11 12
2000 153 187 234 212 300 221 201 175 123 104 85 78
2001 134 175 243 227 298 256 234 165 124 106 87 74
2002 145 203 189 214 295 220 231 174 119 85 67 75
2003 117 178 149 178 248 202 162 135 120 96 90 63
不完美解决,至少解渴了