嗨,我有这样的df,
Name sl no details score
0 Ram 1 ram is going to ooty NaN
1 Ram 2 ram sings well 1.5
2 Ravi 1 ravi play cricket 1.0
3 Ravi 2 ravi is in chennai NaN
4 Kumar 1 kumar passed the exam NaN
5 Kumar 2 kumar is in town NaN
6 Kumar 3 he left 3.0
我正在尝试移动分数列中的值。值应移动到单元格df[sl no]==1 or df[Name] is the first occurence of a name
我的预期输出应该是这样,
Name sl no details score
0 Ram 1 ram is going to ooty 1.5
1 Ram 2 ram sings well NaN
2 Ravi 1 ravi play cricket 1.0
3 Ravi 2 ravi is in chennai NaN
4 Kumar 1 kumar passed the exam 3.0
5 Kumar 2 kumar is in town NaN
6 Kumar 3 he left NaN
请帮忙。
next
在列表理解中有条件地调用next
列表推导中的迭代器。
assert df['sl no'].eq(1).sum() == df['score'].notna().sum()
it = iter(df.score.dropna().tolist())
df['score'] = [
next(it) if i else np.nan for i in df['sl no'].eq(1)
]
df
Name sl no details score
0 Ram 1 ram is going to ooty 1.5
1 Ram 2 ram sings well NaN
2 Ravi 1 ravi play cricket 1.0
3 Ravi 2 ravi is in chennai NaN
4 Kumar 1 kumar passed the exam 3.0
5 Kumar 2 kumar is in town NaN
6 Kumar 3 he left NaN
如果您的assert
陈述失败,则说明您的数据有问题,您提出的要求也不可行。
loc
基于分配v = df.score.dropna().tolist()
df['score'] = np.nan
df.loc[df['sl no'].eq(1), 'score'] = v
df
Name sl no details score
0 Ram 1 ram is going to ooty 1.5
1 Ram 2 ram sings well NaN
2 Ravi 1 ravi play cricket 1.0
3 Ravi 2 ravi is in chennai NaN
4 Kumar 1 kumar passed the exam 3.0
5 Kumar 2 kumar is in town NaN
6 Kumar 3 he left NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句