【发布时间】:2019-11-26 13:34:35
【问题描述】:
说出一个列表,其中元素是 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
【问题讨论】:
-
你有没有注意到,在你使用“=”的任何地方它都可以工作,而当你不使用“=”时,它什么也不做?
-
是的,使用这个 '=' ,代码有效,因为我将输出保存在该变量中。假设我想在列表理解中结合所有这些。有没有办法做到这一点。
-
您没有在代码 2 中重新分配数据帧