仅当列中的值为空、空或NaN时,才使用另一列中的值进行更新

2024-05-15 21:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我编写了这段代码来搜索数据帧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 

Tags: 数据代码importpandasas原因nanwarehouse
1条回答
网友
1楼 · 发布于 2024-05-15 21:26:23

增加掩蔽条件,并使用另一个掩蔽条件指示列是否包含这些空值之一

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 

这可以说是更快

相关问题 更多 >