pandas 如何仅在满足条件时才为列分配其上的值?

wljmcqd8  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(103)

我有一个 Dataframe ,其中一列中有一些空值,我需要将这些空值赋给它们上面的下一个实值,无论是上面1行还是上面4行,但是,需要注意的是,我只需要在满足特定条件时填充这些空值。
Dataframe 当前如下所示:
| 色谱柱A|B栏|
| - ------|- ------|
| 1个|一百|
| 1个|钠氮|
| 1个|钠氮|
| 第二章|一百五十|
| 第二章|钠氮|
| 第二章|钠氮|
| 三个|钠氮|
| 三个|钠氮|
| 四个|六十|
| 五个|七十|
| 五个|钠氮|
我需要它看起来像:
| 色谱柱A|B栏|
| - ------|- ------|
| 1个|一百|
| 1个|一百|
| 1个|一百|
| 第二章|一百五十|
| 第二章|一百五十|
| 第二章|一百五十|
| 三个|钠氮|
| 三个|钠氮|
| 四个|六十|
| 五个|七十|
| 五个|七十|
因此,A列中每个分组的第一个值需要对B列中的该分组执行...... A列中包含1的所有行都应该具有相同的B列值。A列中包含2的所有行都应该具有相同的B列值。它应该是的值将始终是第一个值。换句话说,在列A中出现的新值的第一行将包含列B中应该被向下进位的正确值。
我真的不知道该怎么做,我想用groupby,但是没有多大意义。

vuv7lop3

vuv7lop31#

我认为groupby是正确的选择:

g = df.groupby('Column A')
df['Column B'] = g.ffill()

输出:

Column A    Column B
0   1           100.00
1   1           100.00
2   1           100.00
3   2           150.00
4   2           150.00
5   2           150.00
6   3           NaN
7   3           NaN
8   4           60.00
9   5           70.00
10  5           70.00

相关问题