python - python - 如何在python列表的一个衬里中对df在列表理解中进行切片和重新采样?
问题描述
说一个列表,其中元素是 pandas df。
lst = [df1, df2, df3, df4]
每个 df 都是具有 DT 索引的时间序列。df1 & df2
每 15 分钟df3 & df4
有一次价值,每小时都有一次价值。我想连接所有,但在此之前我需要在df3 & df4
. 首先是重新采样并更改我使用此代码所做的列的名称:
[df.resample('15min').bfill() for df in lst] #this code works for all but, i want this only in df3 & df4- code 1
for df in lst[2:4]:
df.resample('15min').bfill() #this run but does nothing - code 2
for df in lst[0:2]: #same column name for df1, df2 - code 3
df.columns = ['heat']
for df in lst[2:4]:
df.columns = ['energy'] #same column name for df3, df4 - code 4
我需要制作一个对象来保存第二个代码的值吗?在进行切片时,是否有更好的方法将代码 1、3、4 合并到一个衬里?这与当我想用一个值除以我必须给出列表理解的每个 df 时相同,for 循环不起作用。
lst = [x/1000 for x in lst] #this works
for x in lst:
x.values / 1000 #this doesn't
解决方案
您似乎希望操作就地完成(这里是对差异的一个很好的描述)。
在列表推导中,操作返回存储在列表中的值。例如
for [x/1000 for x in lst]
-x/1000
是这样的操作吗
如果您不将操作结果存储在某处,它将不可用(可检索):
for x in lst:
x.values / 1000
的结果x.values / 1000
不存储在任何地方。但是,您可以将其放在不同的列表中,如下所示:
another_list = []
for x in lst:
another_list.append(x.values / 1000)
然后以与列表中相同的方式x.values / 1000
获得操作结果。another_list
lst
因此,您遇到的问题的解决方案应该是这样的:
for df in lst[2:4]:
df = df.resample('15min').bfill()
推荐阅读
- java - 什么是默认 JDBC 字符编码
- css - CSS:列数 + 变换 + 缩放 + 过渡 = 奇怪的行为
- wordpress - WordPress 众筹的不同捐赠账户
- angular - 如何在 Angular 构建库中声明一个 typings.ts 文件
- ios - UIAlertController 仅在特定时间
- android - Moshi 将值反序列化为 null
- javascript - TypeError: css.eachInside 不是 gulp.task 中的函数
- vue.js - 如何确保数据在基于 API 的 Vue 应用程序上始终是最新的?
- python - 通过 POST 请求返回列表
- react-native - 使用 axios 进行昂贵的 api 调用会阻止可触摸,但在 react native 和 redux-saga 中不会使用 fetch