我试图根据另一列是否不为空来移动一行。Description列中的间距不一致,因此我无法执行.shift()
这是原始数据
Permit Number A Description
1234 NaN NaN
NaN NaN NaN
NaN NaN foo
3456 NaN NaN
NaN NaN bar
这就是我希望得到的结果
Permit Number A Description
1234 NaN foo
NaN NaN NaN
NaN NaN NaN
3456 NaN bar
NaN NaN NaN
这是我根据上一次满足某些条件时将一列中的数据与另一行对齐所使用的代码
mask = df['Description'].notnull()
fmask = (df['Permit Number'].notnull() & df['Description'].isnull())
df.assign(Description=df.groupby(mask[::-1].cumsum())['Description'].transform(lambda x: x.iloc[-1]).where(fmask))
但是,当我运行它时,数据帧中没有错误,也没有更改。
如果不需要NaN行,可以按照以下步骤进行。我无法测试,但请告诉我是否有错字。
这是原始的。
Permit Number A Description
1234 NaN NaN
NaN NaN NaN
NaN NaN foo
3456 NaN NaN
NaN NaN bar
我尝试首先实现这一目标:
df['Permit Number'] = df['Permit Number'].ffill()
Permit Number A Description
1234 NaN NaN
1234 NaN NaN
1234 NaN foo
3456 NaN NaN
3456 NaN bar
然后您就可以得到结果了。
df.groupby(['Permit Number','A'])['Description'].max().reset_index()
Permit Number A Description
1234 NaN foo
3456 NaN bar
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句