将欧元兑美元汇率数据转为区间数列时遇维度错误求助
解决pd.cut()报错ValueError: Input array must be 1 dimensional的问题
问题根源
你筛选后得到的是1列的DataFrame(形状6346×1),而pd.cut()要求输入是一维结构(比如Series、numpy一维数组),二维的DataFrame不符合要求,因此触发错误。
解决方法
以下两种方式都可以将数据转为一维结构,解决报错:
方法1:提取DataFrame的列转为Series
直接通过列名或位置索引提取目标列,得到一维的Series对象:
import pandas as pd import numpy as np # 读取并筛选数据 df = pd.read_csv('汇率数据.csv') df['date'] = pd.to_datetime(df['date']) filtered_df = df[df['date'] >= '2017-01-02'] # 提取汇率列(替换为你的实际列名) rate_series = filtered_df['欧元兑美元汇率'] # 调用pd.cut生成区间变异数列 interval_data = pd.cut(rate_series, bins=你的区间数量)
方法2:转为numpy一维数组
如果不确定列名,可通过位置索引提取列并转为numpy一维数组:
# 取筛选后DataFrame的第一列,转为一维数组 rate_array = filtered_df.iloc[:, 0].values # 生成区间数据 interval_data = pd.cut(rate_array, bins=你的区间数量)
验证方式
执行以下代码确认数据维度是否正确:
print(filtered_df.shape) # 输出 (6346, 1),二维DataFrame print(rate_series.shape) # 输出 (6346,),一维Series
内容的提问来源于stack exchange,提问作者Pulf
相关产品推荐
相关产品推荐

