我写了这些代码,其中np.where()
和.iloc[]
用于将 Dataframe 中的NaN
s更改为"missing"
。然而,结果是错误的,原因可能是.iloc[]
识别元组索引不聪明。
谁能给我一些指导来修复它,或者除了fillna()
之外的其他方法?因为我想解决的真实的情况是通过在df1
上应用条件来获取索引,并使用索引来更改df2
中的值,所以fillna()
在我的情况下可能没有帮助。
data = {'Name': ['John', 'Alice', 'Bob', 'Jane', 'Mark'],
'Age': [25, 31, np.nan, 28, 35],
'Salary': [50000, np.nan, 70000, np.nan, 90000]}
df = pd.DataFrame(data)
df
x
Name Age Salary
0 John 25.0 50000.0
1 Alice 31.0 NaN
2 Bob NaN 70000.0
3 Jane 28.0 NaN
4 Mark 35.0 90000.0
# Use np.where and .iloc to replace missing values with a specified value
value_to_replace = "missing"
missing_mask = np.where(df.isna()) # Create a boolean mask for missing values
df.iloc[missing_mask]= value_to_replace # Use np.where for replacement
df
Name Age Salary
0 John 25.0 50000.0
1 Alice missing missing
2 Bob missing missing
3 Jane missing missing
4 Mark 35.0 90000.0
的数据
预期结果应该是:
Name Age Salary
0 John 25.0 50000.0
1 Alice 31.0 missing
2 Bob missing 70000.0
3 Jane 28.0 missing
4 Mark 35.0 90000.0
型
2条答案
按热度按时间8hhllhi21#
我不知道你为什么要这样做,因为你会把你的
float
值改为object
类型,但这是可以做到的。我将使用DataFrame.where
方法进行替换。这将替换条件计算为False
的值 where。因为我们想要替换NaN
的值,所以我们可以使用isna
来找到NaN
s,并应用逻辑NOT使其成为False
,其中值为NaN
。或者,@Timus指出,您可以使用notna
,它与NOTedisna
做同样的事情。字符串
输出量:
型
klsxnrf12#
我试过了,效果很好:
字符串