构建数据遇到Length of values does not match length of index问题

有一组数据想要变成表格那样读取

[('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

不完美解决,至少解渴了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值