Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带移位的列名_Python_Pandas - Fatal编程技术网

Python 带移位的列名

Python 带移位的列名,python,pandas,Python,Pandas,尝试为具有列\u名称的列创建滞后 示例DF代码: df = pd.DataFrame(np.random.randint(0,10,size=(4,2))) df.shift(1) 作品: 但是,当我尝试使用列名创建它时,我得到了nan df1=pd.DataFrame(df.shift(1),columns=["lag"+str(each) for each in df.columns]) df1 作品: 有什么建议可以纠正这个问题吗?问题是有不同的列名称,因此在创建了不匹配的新DataF

尝试为具有
列\u名称的列创建滞后

示例DF代码:

df = pd.DataFrame(np.random.randint(0,10,size=(4,2)))
df.shift(1)
作品:

但是,当我尝试使用列名创建它时,我得到了
nan

df1=pd.DataFrame(df.shift(1),columns=["lag"+str(each) for each in df.columns])
df1
作品:


有什么建议可以纠正这个问题吗?

问题是有不同的列名称,因此在创建了不匹配的新DataFrame列名称并创建了错误的ISNG值之后,它被称为index alignmenet

为了防止,可以将值转换为numpy数组:

df1=pd.DataFrame(df.shift(1).to_numpy(),columns=["lag"+str(each) for each in df.columns])
print (df1)
   lag0  lag1
0   NaN   NaN
1   2.0   2.0
2   8.0   3.0
3   6.0   8.0
但更简单的是使用:


问题是有不同的列名,所以在创建了不匹配的新DataFrame列名并创建了错误的ISNG值之后,它被称为index alignmenet

为了防止,可以将值转换为numpy数组:

df1=pd.DataFrame(df.shift(1).to_numpy(),columns=["lag"+str(each) for each in df.columns])
print (df1)
   lag0  lag1
0   NaN   NaN
1   2.0   2.0
2   8.0   3.0
3   6.0   8.0
但更简单的是使用:


以下是另一种方法:

df = df.shift(1)

l = list(df.columns.astype('str'))
s = 'lag'
cols = [s + i for i in l]
df.columns = cols


以下是另一种方法:

df = df.shift(1)

l = list(df.columns.astype('str'))
s = 'lag'
cols = [s + i for i in l]
df.columns = cols


只需使用
添加前缀
。要使其工作,您需要
df.shift(1).values
。否则,您将使用看不见的索引重新编制索引,这将生成所有索引,只需使用
add\u prefix
。要使其工作,您需要
df.shift(1).values
。否则,您将使用看不见的索引重新编制索引,这将生成所有NAN
df = df.shift(1)

l = list(df.columns.astype('str'))
s = 'lag'
cols = [s + i for i in l]
df.columns = cols
df
    lag0    lag1
0   NaN     NaN
1   7.0     4.0
2   4.0     8.0
3   0.0     9.0