# 删除日期列中日期是当天日期的行 df = df[df[1] != today]這句代碼修改為刪除第列中當天的日期
时间: 2024-01-09 21:05:37 浏览: 7
可以按照以下方式修改代码:
1. 首先,需要确定日期列的列号,假设为第3列(即索引为2),则可以使用以下代码获取当天日期的字符串表示:
```
from datetime import datetime
today = datetime.today().strftime('%Y-%m-%d')
```
2. 然后,可以使用以下代码删除日期列中日期是当天日期的行(假设要删除的日期列为第3列):
```
df = df[df.iloc[:, 2].astype(str) != today]
```
这里使用了 iloc 方法获取第3列(索引为2)的所有行,使用 astype 方法将其转换为字符串类型,然后与当天日期字符串进行比较,最后使用 != 运算符得到不等于当天日期的行,并重新赋值给 df 变量。
相关问题
import datetime today = datetime.date.today() ## 获取今天的日期 day1=datetime.date.today()-datetime.timedelta(300) ### 获取300天之前的日期 day2=datetime.datetime.strftime(today,"%Y-%m-%d" ) all_stock = get_all_securities(types=['stock'], date=day2) ### 获取所有股票代码 code=list(all_stock.index) ## 判断是否ST 并且删除st的股票代码 df_st=get_extras('is_st',code,start_date=day1,end_date=day2) for i in code: if any(df_st[i].values): code.remove(i) stock_list=[] for i in code: start_date=get_security_info(i).start_date days=(today-start_date).days if days>300: #### 选出上市满天300的股票 stock_list.append(i) data=dict() for i in stock_list: df=get_price(i,start_date=day1,end_date=day2,frequency='daily', fields=['open','close','high','low']) data[i]=df ### 将数据分成选股数据和回测数据。假设用中间的120根k线,后60根k线回测 code=[] n=45 ## n为回测k线的个数 s设为45 (可以随意调整) for i in stock_list: df=data[i] max_=max(df.high[-190:-n-1]) ### 选140=(190-45)根k线(可以随意调整) min_=min(df.low[-190:-n-1]) max_close=max(df.close[-190:-n-1]) ### 选出平台震荡期间振幅小于50%的,且,最后三天连涨,最后一天突破平台最大收盘价超过5%的所有股票 if all([max_/min_<1.5,df.close[-n-1]>df.close[-n-2]>df.close[-n-3],df.close[-n-1]/max_close>1.05]): code.append(i) ### 买入过程 ## 假设根据上面平台突破选出来的股票作为买入标的 ## 买入原则是 当天选出来的股票第二天以开盘价买入。且把选出来的每只股票以,同等资金额买入 capital=100000 ## 初始资金为 10万元 position=dict() ## 初始持仓手数为一个空字典 def handle(stock_list,capital,posttion,data,n): capital_=0 for i in code: capital_per=capital/len(code) position[i]=int(capital_per/(data[i].open[-n]*100)) capital_+=capital_per-position[i]*data[i].open[-n]*100 return ([position,capital_]) position_result=handle(get_code(),capital,position,data,n)修改上述代码,使能在jupyter里面运行
可以将代码放在一个 cell 中,并添加必要的库的导入语句。以下是修改后的代码示例:
```python
import datetime
from jqdatasdk import *
auth('用户名', '密码') # 用你自己的聚宽账号密码进行登录
def get_code():
today = datetime.date.today()
day1 = datetime.date.today() - datetime.timedelta(300)
day2 = datetime.datetime.strftime(today, "%Y-%m-%d")
all_stock = get_all_securities(types=['stock'], date=day2)
code = list(all_stock.index)
df_st = get_extras('is_st', code, start_date=day1, end_date=day2)
for i in code:
if any(df_st[i].values):
code.remove(i)
stock_list = []
for i in code:
start_date = get_security_info(i).start_date
days = (today - start_date).days
if days > 300:
stock_list.append(i)
data = dict()
for i in stock_list:
df = get_price(i, start_date=day1, end_date=day2, frequency='daily',
fields=['open', 'close', 'high', 'low'])
data[i] = df
code = []
n = 45
for i in stock_list:
df = data[i]
max_ = max(df.high[-190:-n-1])
min_ = min(df.low[-190:-n-1])
max_close = max(df.close[-190:-n-1])
if all([max_/min_ < 1.5, df.close[-n-1] > df.close[-n-2] > df.close[-n-3], df.close[-n-1]/max_close > 1.05]):
code.append(i)
return code
capital = 100000
position = dict()
def handle(stock_list, capital, position, data, n):
capital_ = 0
for i in stock_list:
capital_per = capital / len(stock_list)
position[i] = int(capital_per / (data[i].open[-n] * 100))
capital_ += capital_per - position[i] * data[i].open[-n] * 100
return position, capital_
code = get_code()
position_result = handle(code, capital, position, data, n)
```
注意:需要将上述代码中的 `用户名` 和 `密码` 替换为自己的聚宽账号密码。另外,聚宽需要联网才能登录。如果你的 jupyter notebook 是在本地运行的,需要确保你的电脑连接到了互联网。如果你是在云端运行的,确保云主机已经联网。
import pandas as pd import datetime df_201=pd.read_excel(r'C:\Users\82422\Desktop\问E讲堂excel\5.04问医晚上数据.xlsx',sheet_name='邀请用户信息') df_201=df_201.drop(['编号','用户ID'],axis=1) #df_201=df_201.rename(columns={'累计观看时长': '2023.5.04累计观看时长'}) #df_201=df_201.rename(columns={'累计观看时长': str(datetime.date.today())+'累计观看时长'}) #将累计观看时长更改成当前日期的累计观看时长 print(df_201.head())import pandas as pd import os df1=pd.DataFrame() for root,dirs,files in os.walk(r'C:\Users\82422\Desktop\问E讲堂excel'): print('root:\n',root) print('dirs:\n',dirs) print('files:\n',files) for file in files: file_name=os.path.join(root,file) df=pd.read_excel(file_name,sheet_name='邀请用户信息') df=df.drop(['编号','用户ID'],axis=1) df=df.rename(columns={'累计观看时长': file[0:4] +'累计观看时长'}) df_201=pd.merge(df,df_201,on=['邀请人昵称','用户昵称'],how='outer') print(df_201) df_201.to_excel(r'C:\Users\82422\Desktop\问E讲堂excel\h2.xlsx',sheet_name='邀请用户信息')优化这个代码
import pandas as pd
import os
# 读取 5.04问医晚上数据.xlsx 中的邀请用户信息,并删除编号和用户ID列
df_201 = pd.read_excel(r'C:\Users\82422\Desktop\问E讲堂excel\5.04问医晚上数据.xlsx', sheet_name='邀请用户信息')
df_201.drop(['编号', '用户ID'], axis=1, inplace=True)
# 将累计观看时长更改成当前日期的累计观看时长
today = pd.Timestamp.today().strftime('%Y.%m.%d')
df_201.rename(columns={'累计观看时长': today + '累计观看时长'}, inplace=True)
# 遍历问E讲堂excel目录下的所有.xlsx文件,读取邀请用户信息,并合并到df_201中
for root, dirs, files in os.walk(r'C:\Users\82422\Desktop\问E讲堂excel'):
for file in files:
if file.endswith('.xlsx'):
file_name = os.path.join(root, file)
if file_name != r'C:\Users\82422\Desktop\问E讲堂excel\5.04问医晚上数据.xlsx':
df = pd.read_excel(file_name, sheet_name='邀请用户信息')
df.drop(['编号', '用户ID'], axis=1, inplace=True)
date = file.split('.')[0] # 获取文件名中的日期
df.rename(columns={'累计观看时长': date + '累计观看时长'}, inplace=True)
df_201 = pd.merge(df, df_201, on=['邀请人昵称', '用户昵称'], how='outer')
# 将合并后的结果保存为 h2.xlsx
df_201.to_excel(r'C:\Users\82422\Desktop\问E讲堂excel\h2.xlsx', sheet_name='邀请用户信息', index=False)
阅读全文