python - 有条件地在数据框中创建新列
问题描述
更新的问题
通过使用下面的代码,我只能在完成 for 循环后访问数据帧,但我想在中间时间使用数据帧的最新创建列。即每5分钟后,无论是数据框的最后一列,如何实现这一点?
@app.route("/sortbymax")
def sortbymax():
df = updated_data()
#### here i want to use most recently created column
df = create_links(df)
df = df.sort_values(by=['perc_change'], ascending=False)
return render_template('sortbymax.html',tables=[df.to_html(escape = False)], titles=df.columns.values)
def read_data():
filename = r'c:\Users\91956\Desktop\bk.xlsm'
df = pd.read_excel(filename)
return df
def updated_data():
df = read_data()
for i in range(288):
temp = read_data()
x=datetime.datetime.now().strftime("%H:%M:%S")
df['perc_change_'+x] = temp['perc_change']
time.sleep(300)
return df
解决方案
我看到您有一个 .xlsm 文件,这意味着启用了宏的 excel。我想您可以阅读它,但是如果您想用 python 更改它,那么您很可能会丢失 excel 中的宏部分。
对于 python 部分:这将每 5 分钟复制一次 perc_change 列,并带有相应的名称。但是请记住,这只会工作一天(之后它将替换现有的列)。如果您想工作更长的时间,请告诉我,以便我在列名中添加日-月-年(无论您想要什么)。
import datetime
import time
def read_data():
filename = r'c:\Users\91956\Desktop\bk.xlsm'
df = pd.read_excel(filename)
return df
def write_data(df):
filename = r'c:\Users\91956\Desktop\bk.xlsm'
df.to_excel(filename)
df = read_data() #read excel for first time
for i in range(288): #this will run for one day exactly
temp = read_data()
x=datetime.datetime.now().strftime("%H:%M")
df['perc_change_'+x] = temp['perc_change']
time.sleep(300)
推荐阅读
- html - 如何更改 a 的返回类型
- jenkins-pipeline - docker npm build后Jenkins复制文件错误
- unity3d - 警告 CS0642,可能是错误的空语句
- node.js - AdonisJS 无法在函数内返回响应(SAP HANA)
- angular - Angular - mat-autocomplete 到 mat-select-search
- flutter - 隐藏溢出颤动,没有溢出消息
- reactjs - 如何遍历 MongoDB 条目,总结条目并呈现在 React 前端
- elasticsearch - 是否支持星号以外的 ElasticSearch 索引模式通配符?
- keras - 如何在 Keras 更改 ImageDataGenerator 的预处理函数执行顺序?
- rust - 将可变实例方法传递给函数