从for循环[python]获取NAN值

2024-06-16 11:37:38 发布

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

我有一个python数据框架,其中有一列CREATIVE_NAME,我想通过搜索特定的子字符串并将它们放入新列来创建一个新列CREATIVE_SIZE

 creative_size = []
    for i in df['CREATIVE_NAME']:
        if search('320x480', i):
            creative_size.append('320x480')
        elif search('728x1024', i):
            creative_size.append('728x1024')
        elif search('320x50', i):
            creative_size.append('320x50')
        elif search('728x90', i):
            creative_size.append('728x90')
        elif search('300x250', i):
            creative_size.append('300x250')
        elif search('80x80', i):
            creative_size.append('80x80')
        elif search('1200x627', i):
            creative_size.append('1200x627')
        elif search('768x1024', i):
            creative_size.append('768x1024')
        elif search('320x420', i):
            creative_size.append('320x420')
        elif search('768x820', i):
            creative_size.append('768x820')
        else:
            creative_size.append('no creative size')

sizes = pd.Series(creative_size)
df.insert(column='creative_size', value=sizes, loc = 0)

df['creative_size'].isna().sum()
output: 1579

我不明白为什么要从for循环中获取NAN值,因为它应该捕获所有条件,并且不应该遗漏任何内容


Tags: 数据字符串namein框架dfforsearch
1条回答
网友
1楼 · 发布于 2024-06-16 11:37:38
import pandas as pd
####    FOR TESTING ####
test_data_dict = {
'CREATIVE_NAME':['320x480', '728x1024', '1000x1000']
}

df = pd.DataFrame(data=test_data_dict)

#### Define a set of all creative sizes you want to check against

creative_sizes =('320x480','728x1024','320x50','728x90','300x250','80x80','1200x627','768x1024','320x420','768x820') #list of valid creative sizes

###### Define a function which will check if `C_name` is a substring of available creative_sizes

def get_creative_size(c_name):
    #c_name is the value of creative_name in row
    result = [size for size in creative_sizes if c_name in size] 
    if len(result) > 0:
        return result[0]
    else:
        return 'no creative size'

df['CREATIVE_SIZE'] = df['CREATIVE_NAME'].apply(lambda x: get_creative_size(x))
print(df.head())

相关问题 更多 >