我的目标是使用一个条件来子集一个df,并将这些行附加到df的右侧。例如,当Num2
等于1
时,我想取下一行并将其附加到df
的右侧。下面每行追加,其中我只想在Num2
中的1
之后追加下一行。我还希望能够附加特定的COL。使用下面的方法,这只能是Num1和Num2
df = pd.DataFrame({
'Num1' : [0,1,2,3,4,4,0,1,2,3,1,1,2,3,4,0],
'Num2' : [0,0,0,0,0,1,3,0,1,2,0,0,0,0,1,4],
'Value' : [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
})
df1 = df.add_suffix('1').join(df.shift(-1).add_suffix('2'))
预期产出:
# grab all rows after a 1 in Num2
ones = df.loc[df["Num2"].shift().isin([1])]
# append these to the right
Num1 Num2 Value Num12 Num22
0 0 0 0
1 1 0 0
2 2 0 0
3 3 0 0
4 4 0 0
5 4 1 0 0 3
6 0 3 0
7 1 0 0
8 2 1 0 3 2
9 3 2 0
10 1 0 0
11 1 0 0
12 2 0 0
13 3 0 0
14 4 1 0 0 4
15 0 4 0
为此,我们可以创建前三个列的-1移位的新列,如果Num2不是1,则将它们设置为等于“”
我得到了一个警告,但是
您可以尝试:
或
如果需要,使用
fillna()
:相关问题 更多 >
编程相关推荐