如何在python列表中的一行代码中对列表理解中的df进行切片和应用重采样?

如何在python列表中的一行代码中对列表理解中的df进行切片和应用重采样?,python,pandas,slice,Python,Pandas,Slice,说出一个元素所在的列表 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 & 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

似乎您希望操作在适当的位置完成(这是对差异的一个很好的描述)

在列表理解中,该操作返回存储在列表中的值。例如

对于
[x/1000代表lst中的x]
-
x/1000
就是这样一种操作

如果您不将操作结果存储在某个地方,则该结果将不可用(可检索):

x.values/1000
的结果不会存储在任何地方。但是,您可以将其放在不同的列表中,如下所示:

another_list = []
for x in lst:
    another_list.append(x.values / 1000)
然后,
x.values/1000
操作的结果可以在
另一个列表
中获得,方式与
lst
列表中的方式相同

因此,解决问题的方法应该是:

for df in lst[2:4]:
    df = df.resample('15min').bfill()       

如果要使用列表理解进行重新采样,可以

lst = [df.resample('15min').bfill() for df in lst]
这不会影响
df1
df2
,因为它们的间隔已经为15分钟

如果要在一个周期内重命名列名:

for i,df in enumerate(lst):
    df.columns = ['heat'] if i<2 else ['energy']
枚举(lst)中的i、df的

df.columns=['heat']如果我注意到您使用“=”的任何地方它都工作,而当您不使用“=”时它什么也不做?是的,使用这个“=”,代码工作,因为我将输出保存在该变量中。假设我想在列表理解中结合所有这些。有没有办法做到这一点。您没有在代码2中重新分配数据帧
另一个\u list=[]
将再次成为dfs列表,但在值被划分之后?是的,准确地说。
for i,df in enumerate(lst):
    df.columns = ['heat'] if i<2 else ['energy']