这个问题的动机是
an answer
我刚才给了。
假设我有一个这样的数据框
import numpy as np
import pandas as pd
df = pd.DataFrame({'a': [1, 2, np.nan], 'b': [3, np.nan, 10], 'c':[np.nan, 5, 34]})
a b c
0 1.0 3.0 NaN
1 2.0 NaN 5.0
2 NaN 10.0 34.0
我想替换
NaN
按行的最大值,
I can do
df.apply(lambda row: row.fillna(row.max()), axis=1)
这给了我想要的输出
a b c
0 1.0 3.0 3.0
1 2.0 5.0 5.0
2 34.0 10.0 34.0
然而,当我使用
df.apply(lambda row: row.fillna(max(row)), axis=1)
出于某种原因,仅在以下三种情况中的两种情况下才能正确更换:
a b c
0 1.0 3.0 3.0
1 2.0 5.0 5.0
2 NaN 10.0 34.0
确实,如果我亲自检查
max(df.iloc[0, :])
max(df.iloc[1, :])
max(df.iloc[2, :])
然后打印出来
3.0
5.0
nan
执行时
df.iloc[0, :].max()
df.iloc[1, :].max()
df.iloc[2, :].max()
它打印预期的
3.0
5.0
34.0
我的问题是为什么
max()
三种情况中的一种失败,但并非所有三种情况都失败。为什么
南安
有时被忽视,有时不被忽视?