【发布时间】:2021-05-14 17:57:01
【问题描述】:
我有一个CSV file,其中包含按日期和代码划分的股市数据。它有各种列,如日期、最高价格、最低价格等。我必须从 2019 年的最后四个月到 2020 年的前三个月以 10 天的频率重新采样这些数据,然后过滤大于 20000 的 Min.mean() 和小于 35000 的 Max.mean()。我写了这段代码:
import numpy as np
import pandas as pd
from datetime import datetime
stock_df = pd.read_csv('stock_data.csv')
stock_df.drop(columns = ['Unnamed: 0'],inplace=True)
column_names = {
"تاریخ":"str_date",
"اولین قیمت":"Open",
"نماد":"Symbol",
"نام":"Name",
"قیمت پایانی":"Close",
"قیمت آخرین معامله":"Last Trade",
"تعداد معاملات":"Quantity",
"حجم":"Volume",
"ارزش":"Value",
"کمترین قیمت":"Min",
"بیشترین قیمت":"Max",
"قیمت دیروز":"Yesterday Price",
"تغییر":"Change"}
stock_df.rename(columns=column_names,inplace=True)
stock_df["date"] = pd.to_datetime(stock_df["str_date"])
最初的尝试是这样的:
stock_df.set_index('date',inplace=True)
result = stock_df.loc["2019-09":"2020-03"].resample('10D').Max.mean()<=35000 & stock_df.loc["2019-09":"2020-03"].resample('10D').Min.mean()>=20000
stock_df 是保存 CSV 文件数据的 DataFrame。最终答案必须放入数据框result。但是这段代码得到了这个错误:
TypeError: Cannot perform 'rand_' with a dtyped [float64] array and scalar of type [bool]
【问题讨论】:
标签: python pandas numpy data-science