更新或替换DF中的值,当条件为m时

2024-05-29 10:10:57 发布

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

我有一个城市名称列表和一个带有城市、州和zipcode列的df。一些zipcodes丢失了。当zipcode丢失时,我想使用基于城市的通用zipcode。例如,城市是圣何塞,因此zipcode应该是一个通用的“SJïu zipcode”。你知道吗

pattern_city = '|'.join(cities) #works

foundit = ( (df['cty_nm'].str.contains(pattern_city, flags=re.IGNORECASE)) & (df['zip_cd']==0) & (df['st_cd'].str.match('CA') ) ) #works--is this foundit a df?

df['zip_cd'] = foundit.replace( 'SJ_zipcode' ) #nope, error

错误:“pad\u 1d[bool]的数据类型无效”

where实现

df['zip_cd'].where( (df['cty_nm'].str.contains(pattern_city, flags=re.IGNORECASE)) & (df['zip_cd']==0) & (df['st_cd'].str.match('CA') ), "SJ_Zipcode", inplace = True) #nope, empty set; all set to nan?

loc实现

df['zip_cd'].loc[ (df['cty_nm'].str.contains(pattern_city, flags=re.IGNORECASE)) & (df['zip_cd']==0) & (df['st_cd'].str.match('CA') ) ] = "SJ_Zipcode"

一些可能的解决方案不起作用

一个额外的'want';我想用值更新一个数据帧,我不想创建一个新的数据帧。你知道吗


Tags: incitypandasdfcdzipwhereloc
1条回答
网友
1楼 · 发布于 2024-05-29 10:10:57

试试这个:

df = pd.DataFrame(data)
df

    city         state        zip
0   Burbank      California   44325
1   Anaheim      California   nan
2   El Cerrito   California   57643
3   Los Angeles  California   56734
4   san Fancisco California   32819

def generate_placeholder_zip(row):
    if pd.isnull(row['zip'] ):
        row['zip'] =row['city']+'_ZIPCODE'
    return row   

df.apply(generate_placeholder_zip, axis =1)

    city          state         zip
0   Burbank       California    44325
1   Anaheim       California    Anaheim_ZIPCODE
2   El Cerrito    California    57643
3   Los Angeles   California    56734
4   san Fancisco  California    32819

相关问题 更多 >

    热门问题