我有一个情况,我想shift
多个 Dataframe 的一行。一个for
循环是第一件事出现在脑海中,但它实际上并没有存储 Dataframe 。其他SO帖子建议使用inline=True
选项,其适用于某些变换但不适用于shift
,因为内联不是选项。显然,我可以通过编写几行df = df.shift(1)
代码来手动完成这一操作,但这是为了学习最复杂的方法...下面是一个MRE,显示了一个标准的for
循环和一个基于函数的方法:
import pandas as pd
import numpy as np
def shifter(df):
df = df.shift(1)
return df
data1 = {'a':np.random.randint(0, 5, 20),
'b':np.random.randint(0, 5, 20),
'c':np.random.randint(0, 5, 20)}
data2 = {'foo':np.random.randint(0, 5, 20),
'bar':np.random.randint(0, 5, 20),
'again':np.random.randint(0, 5, 20)}
df1 = pd.DataFrame(data=data1)
df2 = pd.DataFrame(data=data2)
print(df1)
for x in [df1, df2]:
x = x.shift(1)
print(df1)
for x in [df1, df2]:
x = shifter(x)
print(df1)
2条答案
按热度按时间hfyxw5xn1#
您需要重新分配内容,而不是创建新变量:
或者,在函数中:
fzwojiic2#
另一种办法是:
其返回