python - 如果 A 列中的单元格为空,则修改 B 列中的单元格

标签 python python-3.x pandas dataframe lambda

我在 A 列中有空 (nan) 值,并且当 A 列中同一行的单元格为空时,我希望将 0 分配给 B 列中的单元格。

B 列已创建为以下 lambda 表达式:

df['col_B'] = df.apply(lambda x: x.col_A in x.col_C, axis=1)

我尝试修改它,但它不起作用,并且从我读到的内容来看,不建议这样做。

所以我尝试使用经典循环,它没有显示错误,但它不会修改 B 列中的单元格:

for index, row in df.iterrows():
    if row['col_A'] is None:
        df.at[index, 'col_B'] = 0

我的空值显示为“nan”(不是“None”或“Nan”),所以我什至不确定Python是否将它们视为真正的空值。

你有什么建议?

最佳答案

你应该avoid pd.Series.apply wherever possible 。也就是说,对于条件赋值,有一些通过 bool 级数的替代方案。

您可以使用loc :

df.loc[df['col_A'].isnull(), 'col_B'] = 0

或者mask :

df['col_B'] = df['col_B'].mask(df['col_A'].isnull(), 0)

或者np.where :

df['col_B'] = np.where(df['col_A'].isnull(), 0, df['col_B'])

如果您的空值是字符串,请确保先替换它们;例如:

df['col_A'] = df['col_A'].replace('Nan', np.nan)

关于python - 如果 A 列中的单元格为空,则修改 B 列中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519230/

相关文章:

不打开文件的Python文件大小

python - 如何替换数据框每行中大于特定阈值的前 n 个元素

python - 如何添加包含行上聚合信息的列?

Python Pandas : Best strategy to import heterogenious csv file

python - 如何理解 lambda 中的闭包?

python - Tkinter 和 Tix 演示或展示应用程序?

python - Google Scrape with Python 中的结果数量错误

django - 为什么我收到这个错误?属性错误 : 'str' object has no attribute 'decode'

python-3.x - 如何只匹配一次出现的双倍空格?

python - KNeighborsClassifier .predict() 函数不起作用