因此,我编写了此代码段来搜索数据帧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
答案 0 :(得分:2)
增强掩蔽条件,并与另一个条件一起指示列是否包含这些空值之一。
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
可以说是更快。