如何获取条件,将其应用于列,并在条件为true的位置之间获取值,然后根据这些值创建另一列



我有一个看起来像这样的数据帧:

Name     V  
S_1     NaN
01      p
02       p
S_2     NaN
03       p
S_3     NaN
04       p

我希望在列"中具有值;名称";其包含";S_;以在其自己的列中;S_;值在它自己的列中(与"S_"值对齐(;V";列与";名称";柱

所以最终的数据帧看起来是这样的:

Name    Name2  V 
S_1     01     p
S_1     02     p
S_2     03     p
S_3     04     p

我知道条件语句会涉及str.contains方法,但我不确定如何继续更改数据帧,使其看起来像我想要的样子。

我们可以将masknotnull:一起使用

mask = df.V.notnull()
# also according to your logic
# mask = ~ df['Name'].str.startswith('S_')
df['Name1'] = df['Name'].mask(mask).ffill()
df = df[mask]

输出:

Name  V Name1
1   01  p   S_1
2   02  p   S_1
4   03  p   S_2
6   04  p   S_3

最新更新