python - 使用条件语句在矩阵中输入值导致错误
问题描述
我正在尝试根据一些条件语句将数据输入到矩阵中。我尝试过的没有任何工作,这里有一些代码:
dataframe = pd.read_csv("C:/Users/Thomas/ML/p39_time_series.csv")
df_array = dataframe.values
x_dates = df_array[:,4:5] # contains dates
y_sales = df_array[:,1]
list(zip(x_dates, y_sales)) [0:15]
为此输出:
[(array([2007.]), 0.0),
(array([2007.01923077]), 0.0),
(array([2007.03846154]), 0.0),
(array([2007.05769231]), 0.0),
(array([2007.07692308]), 0.0),
(array([2007.09615385]), 0.0),
(array([2007.11538462]), 0.0),
(array([2007.13461538]), 0.0),
(array([2007.15384615]), 311.0),
(array([2007.17307692]), 3664.0),
(array([2007.19230769]), 7942.0),
(array([2007.21153846]), 186.0),
(array([2007.23076923]), 10830.0),
(array([2007.25]), 8589.0),
(array([2007.26923077]), 7844.0)]
每个“x_dates”元素相隔 19 天。所以一年我们有日期2007.01923077
,明年我们有输出2008.01923077
,它等于一年中的同一时间,但明年。我想查看每年的独特时间框架,例如,我想查看从第 19 天开始的过去 10 年中每年的销售额。为此,我制作了以下代码:
minusNumber = 2007
for x in range(x_dates.size):
print(x_dates[x] - minusNumber)
if x_dates[x] - minusNumber >= 1.0:
minusNumber +=1
x_dates[x] = x_dates[x] - minusNumber
else:
x_dates[x] = x_dates[x] - minusNumber
print(x_dates)
示例输出:
[0.]
[0.01923077]
[0.03846154]
[0.05769231]
[0.07692308]
[0.09615385]
[0.11538462]
[0.13461538]
[0.15384615]
[0.17307692]
[0.19230769] # (....)
因此,由于数据被分成每周数据,我有 52 个独特的元素。我有 10 年的销售数据。我想要一个 52 行 10 列的矩阵来输入所有 520 个数据点:
uniqueX = numpy.unique(x_dates)
sales, week = 10, 52;
Matrix = [[0 for x in range(sales)] for y in range(week)]
这是不起作用的代码:
for x in x_dates:
for i in uniqueX:
if x_dates.item(x) == uniqueX[i]:
#sales = 10.
for q in range(sales):
if Matrix[i][q] != 0:
Matrix[i][q] = y_sales[x] #Equal same temperature at the current index.
这导致TypeError: only integer scalar arrays can be convert to a scalar index
我也在 IndexError 中尝试if x_dates[x] == uniqueX[i]:
了这个结果:用作索引的数组必须是整数(或布尔)类型
也试过这个
if x_dates.item(1) == uniqueX[1]:
这会导致TypeError: list indices must be integers or slices, not numpy.float64
解决方案
我想你想这样做:
for x in range (x_dates.size):
for i in range (uniqueX.size):
if x_dates.item(x) == uniqueX[i]:
#sales = 10.
for q in range(sales):
if Matrix[i][q] != 0:
Matrix[i][q] = y_sales[x]
推荐阅读
- jquery - 为什么jQuery会阻止propper 301重定向?
- java - 不能 Mockbean HttpServletResponse
- javascript - Onclick 事件在角度 6 中的动态 html 字符串中不起作用
- mongoose - 如何使用 TypeMoq 模拟猫鼬模型方法?
- google-fit-sdk - REST API 中是否提供 Heart Points?
- android - 我在图层列表中有进度条剪辑问题
- android - 添加滚动行为后,BottomNavigationView 默认隐藏
- javascript - 更新 Firebase 和 React 中的值
- actions-on-google - 谷歌操作给出响应-“抱歉,出了点问题。请重试。” 在交易流
- python - 任何keras层中的dropout层和dropout参数有什么区别