我有表格.csv地址:
ID,X,X_2,X_3,Rank
XJ5,30,24,37,1
XK4,20,22,20,1
XK5,33,27,38,1
XK7,22,19,22,1
XJ5,33,22,21,2
XK4,20,22,22,2
XK5,33,24,29,2
XK6,23,21,22,2
XJ5,24,22,19,3
XK4,21,20,34,3
XK5,19,22,32,3
XK6,44,24,21,3
XK7,32,21,23,3
并希望输出表:
ID,X,X_2,X_3,Rank,PrevX
XJ5,30,24,37,1,NA
XK4,20,22,20,1,NA
XK5,33,27,38,1,NA
XK7,22,19,22,1,NA
XJ5,33,22,21,2,30
XK4,20,22,22,2,20
XK5,33,24,29,2,33
XK6,23,21,22,2,NA
XJ5,24,22,19,3,33
XK4,21,20,34,3,20
XK5,19,22,32,3,33
XK6,44,24,21,3,23
XK7,32,21,23,3,NA
新的PrevX列是Rank-1行的ID的X值
到目前为止,我掌握的情况如下:
import pandas
df = pandas.read_csv('table.csv')
更新
一种方法是:
id
的数据进行分组。对每个组应用以下内容:rank
排序rank
移位11
添加到此新列rank
列进行比较:如果它们相等,则指定前面的X
值,否则,指定NaN
可选以匹配预期输出:
rank
排序。你知道吗代码如下:
原始答案
假设列组总是由3行组成,您可以使用^{} :
如果您不知道每个} 和^{} 找到它:
rank
组的行数,可以使用^{希望有帮助!你知道吗
我认为
groupby
和shift
如下:_在
Rank
上groupby
并找到diff
是1
来创建一个掩码m
,以根据它们的Rank
相邻的条件(秩-1)来标识哪个ID
有值。秩1中的任何相同的ID
都将是标志True
,否则False
_
groupby
在ID
和shift
在X
_最后,使用带掩码的
where
将m
中的False
翻转到NaN
相关问题 更多 >
编程相关推荐