根据其他列的值(根据公式)替换 pandas.DataFrame 的 NaN 值

Replace NaN values of pandas.DataFrame based on values of other columns (according to formula)

演示数据框:

import pandas as pd
df = pd.DataFrame({'a': [1,None,3], 'b': [5,10,15]})

我想用b**2中的相应值替换a中的所有NaN值,并使b NaN(移位NaN值并对其进行一些操作).

想要的结果:

1   5
100  NaN
3   15

pandas怎么可能?

您可以使用 df['a'].isnull() 获取要更改的行。然后您可以使用它来更新带有 loc.

的列
import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1, None, 3], 'b': [5, 10, 15]})

change = df['a'].isnull()
df.loc[change, ['a', 'b']] = [df.loc[change, 'b']**2, np.NaN]

print(df)

请注意,change 变量只是为了避免在赋值的两边重复 df['a'].isnull()。您可以用该表达式替换它以在一行中执行此操作,但我认为这看起来很混乱。

结果:

       a     b
0    1.0   5.0
1  100.0   NaN
2    3.0  15.0