我的数据框是:
import pandas as pd
df = pd.DataFrame(
{
'x': ['a', 'a', 'a','b', 'b','c', 'c', 'c',],
'y': list(range(8))
}
)
这是预期的输出。我想创建列z
:
x y z
0 a 0 NaN
1 a 1 NaN
2 a 2 NaN
3 b 3 3
4 b 4 NaN
5 c 5 NaN
6 c 6 NaN
7 c 7 NaN
逻辑是:
我想找到第一组重复行之后的第一行。例如在列中x
,值a
是第一个重复的值。我想在值结束后找到一行a
。然后将该y
行的作为z
列。
这是我的尝试,但没有给出输出:
m = (df.x.duplicated())
out = df[m]
一个选项是使用自定义掩码:
如果您的第一个值始终是
a
并且您想要找到第一个非,a
那么您也可以使用:或者,如果你确定前导 s 后至少有一行
a
:输出:
一些中间体(所有方法):