根据其他列的值(根据公式)替换 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
演示数据框:
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