data['逾期']=data['用车时间'].apply(lambda x:(datetime.now().strftime('%Y-%m-%d %H:%M:%S')-pd.to_datetime(x).strftime('%Y-%m-%d %H:%M:%S')).dt.days)返回unsupported operand type(s) for -: 'str' and 'str'
时间: 2023-08-27 13:04:03 浏览: 348
这个错误是因为`datetime.now().strftime('%Y-%m-%d %H:%M:%S')`和`pd.to_datetime(x).strftime('%Y-%m-%d %H:%M:%S')`都返回了字符串类型,不能直接相减。
应该把这两个字符串类型的对象转换为`datetime`类型的对象,然后再相减,最后使用`.days`方法获取相差的天数。修改代码如下:
```python
from datetime import datetime
import pandas as pd
data['逾期'] = data['用车时间'].apply(lambda x: (datetime.now() - pd.to_datetime(x)).days)
```
这样就可以成功计算逾期天数了。
相关问题
用Python写一段代码,使用tushare库及pandas,首先设置tushare token,获取今日的日期,获取今日及前四日所有沪市、深市、创业板、科创板股票数据,保存数据,读取数据,筛选出五日内每日成交额前100的股票,计算股票五日均价,从之前筛选的股票中选出今日收盘价大于五日均价且今日成交量小于前三日的股票,保存结果到文件,文件名为今日日期
好的,我知道了。不过在回答你的问题之前,需要确认一下你的电脑是否已经安装好了 tushare 和 pandas 库。如果没有安装,需要先使用 pip 安装这两个库。可以在命令行中输入以下命令来安装:
```
pip install tushare pandas
```
安装完成后,可以开始写代码了。以下是符合你要求的代码:
```python
import tushare as ts
import pandas as pd
import datetime as dt
# 设置 tushare token
ts.set_token('your_tushare_token')
# 获取今日日期
today = dt.datetime.now().strftime('%Y-%m-%d')
# 获取今日及前四日所有股票数据
pro = ts.pro_api()
stocks = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
start_date = (dt.datetime.now() - dt.timedelta(days=4)).strftime('%Y%m%d')
end_date = dt.datetime.now().strftime('%Y%m%d')
stock_data = pd.DataFrame()
for exchange in ['SSE', 'SZSE', 'GEM', 'KCB']:
data = pro.daily_basic(ts_code='', trade_date=end_date, start_date=start_date, exchange=exchange,
fields='ts_code,trade_date,turnover_rate,turnover_rate_f,volume_ratio,pe,pb')
stock_data = stock_data.append(data, ignore_index=True)
# 保存数据到文件
stock_data.to_csv(f'{today}.csv', index=False)
# 读取数据
stock_data = pd.read_csv(f'{today}.csv')
# 筛选出五日内每日成交额前100的股票
top100 = stock_data.sort_values('turnover_rate', ascending=False).groupby('trade_date').head(100)
# 计算股票五日均价
top100['ma5'] = top100.groupby('ts_code')['turnover_rate'].transform(lambda x: x.rolling(5).mean())
# 选出今日收盘价大于五日均价且今日成交量小于前三日的股票
result = top100[(top100['trade_date'] == end_date) & (top100['close'] > top100['ma5']) &
(top100['volume'] < top100.groupby('ts_code')['volume'].apply(lambda x: x[-4:].mean()))]
# 保存结果到文件
result.to_csv(f'{today}_result.csv', index=False)
```
这段代码会根据你的 tushare token 获取今日及前四日所有沪市、深市、创业板、科创板股票数据,并保存到一个 CSV 文件中。然后读取 CSV 文件,筛选出五日内每日成交额前100的股票,并计算每支股票的五日均价。最后从之前筛选的股票中选出今日收盘价大于五日均价且今日成交量小于前三日的股票,并将结果保存到一个新的 CSV 文件中,文件名为今日日期。
阅读全文