python - 仅当一列中的值为空白、空或 NaN 时才更新另一列中的值

标签 python pandas dataframe nan

因此,我编写了这段代码来搜索数据框 1 的整个仓库列,以查找出现 20 次或更多次的单元格值,如果单元格值满足此要求,则代码将写入仓库的单元格值列覆盖 GeneralDescription 列的单元格值。它正在工作,但我想添加它,这样它就不会覆盖单元格值,除非它为空或 NaN 或 ''。

import pandas as pd 

df1.Warehouse=df1.Warehouse.str.upper() 

出于某种奇怪的原因,我无法将下一行代码缩进四个空格

df1.loc[df1.groupby('Warehouse').Warehouse.transform('count').gt(20),'GeneralDescription']=df1.Warehouse 

最佳答案

增强您的屏蔽条件,并将其与另一个指示列是否包含这些空值之一的条件相结合。

i = df1.groupby('Warehouse').Warehouse.transform('count').gt(20)
j = df1.Warehouse.isin([np.nan, 'Empty', ''])

df1.loc[i & j, 'GeneralDescription'] = df1.Warehouse 
<小时/>

或者,在加载数据时,指定 na_values,以便所有内容都变为 NaN:

df = pd.read_csv(..., na_values=['Empty', '', 'NaN', 'nan'])

然后你就可以这样做:

i = df1.groupby('Warehouse').Warehouse.transform('count').gt(20)
j = df1.Warehouse.isnull()
df1.loc[i & j, 'GeneralDescription'] = df1.Warehouse 

这可以说更快。

关于python - 仅当一列中的值为空白、空或 NaN 时才更新另一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352305/

相关文章:

python - Pandas df.str.split() 仅在第一个元素上

python - python中的条件覆盖

python - 通过索引中的部分字符串匹配选择行

python - Pandas LOC 选择值背后的逻辑

python - Pyspark数据框获取列的所有值

r - 由于特殊字符而面临更改数据帧结构的问题

R有条件地将日期时间从一个数据帧匹配到第二个数据帧中最近的日期时间字段

python - '-' 的类型错误

python - Pygame鼠标移动

pandas - 将数据写入 Excel 给我 'ZIP does not support timestamps before 1980'