如何在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']