【发布时间】:2021-05-18 09:08:51
【问题描述】:
我想用 1 替换我的数据框中的每个 NaN 值,用 0 替换每个其他值。这只是我需要根据一列中的 NaN 值更改 df 的项目的一个示例。
我尝试了 isnull()、isnan()、x.Field_2 和更多变体。 isnull 的文档也没有真正帮助我。我用谷歌搜索了很多,只找到了可以获取 df 的所有 NaN 值的操作。
我猜问题是 x['Field_2'].isnull() 正在返回一个数组,但我想不出其他可以改变 df 的东西。基本上我正在寻找一种方法来检查每一行是否单元格是 NaN 并为每个单元格执行它。
我的错误信息:
KeyError: 'Field_2'
# importing pandas and numpy libraries
import pandas as pd
import numpy as np
# creating and initializing a nested list
values_list = [[15, 2.5, np.nan], [20, 4.5, 50], [25, 5.2, 80],
[45, 5.8, 48], [40, np.nan, 70], [41, 6.4, 90],
[51, 2.3, 111]]
# creating a pandas dataframe
df = pd.DataFrame(values_list, columns=['Field_1', 'Field_2', 'Field_3'],
index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
df = df.apply(lambda x: 1 if x['Field_2'].isnull() else 0)
---------解决方案
通过您的帮助,我可以解决我的问题。非常感谢! - 最终解决方案:
resultList = df.apply(lambda x: x['Field_1'] if pd.isna(x['Field_2']) else x['Field_2'], axis=1)
df['newColumn'] = resultList
df
【问题讨论】:
标签: python pandas dataframe nan