Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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_Dataframe_Matrix - Fatal编程技术网

Python-将上一行和下一行绑定到当前行

Python-将上一行和下一行绑定到当前行,python,pandas,dataframe,matrix,Python,Pandas,Dataframe,Matrix,我有一个熊猫数据框,如下所示: d = {'col1': [1, 2], 'col2': [3, 4], 'col3': [5, 6]} df = pd.DataFrame(data=d) 这看起来像: doc sent col1 col2 col3 0 0 0 5 4 8 1 0 1 6 3 2 2 0 2 1 2 9 3 1 0 6 1 6 4 1 1 5 1

我有一个熊猫数据框,如下所示:

d = {'col1': [1, 2], 'col2': [3, 4], 'col3': [5, 6]}
df = pd.DataFrame(data=d)
这看起来像:

  doc  sent col1 col2 col3
0   0    0    5   4    8
1   0    1    6   3    2
2   0    2    1   2    9
3   1    0    6   1    6
4   1    1    5   1    5
我希望将上一行和下一行绑定到每个列,如下所示(在我的示例中,考虑“doc”和“sent”列,这两个列作为索引,前面或后面都不能出现,如下所示):

用于获取上一行/下一行、合并数据帧以及将null设置为零

null的存在将int向上转换为浮点,因为numpy整数数组不能包含null值,在将null替换为0后,这些值将被转换回int

cs = ['col1', 'col2', 'col3']
g = df.groupby('doc')

pd.concat([
   df, 
   g[cs].shift(-1).add_prefix('n'), 
   g[cs].shift().add_prefix('p')
], axis=1).fillna(0).astype(int)
产出:

   doc  sent  col1  col2  col3  ncol1  ncol2  ncol3  pcol1  pcol2  pcol3
0    0     0     5     4     8      6      3      2      0      0      0
1    0     1     6     3     2      1      2      9      5      4      8
2    0     2     1     2     9      0      0      0      6      3      2
3    1     0     6     1     6      5      1      5      0      0      0
4    1     1     5     1     5      0      0      0      6      1      6

您的MWE数据帧与您显示的输入没有任何关系?谢谢,我可能会使用此数据帧的一些变体。你把“p”和“n”混在一起了。如果您能解释一种方法,我可以将其标记为正确答案,我可以避免在文档索引的开头和结尾分别取上一行和下一行的值。谢谢,我将通过
df.doc
   doc  sent  col1  col2  col3  ncol1  ncol2  ncol3  pcol1  pcol2  pcol3
0    0     0     5     4     8      6      3      2      0      0      0
1    0     1     6     3     2      1      2      9      5      4      8
2    0     2     1     2     9      0      0      0      6      3      2
3    1     0     6     1     6      5      1      5      0      0      0
4    1     1     5     1     5      0      0      0      6      1      6