[英]Update or replace value in df when conditions are met
我有一個城市名稱列表和一個帶有城市,州和郵政編碼列的df。 缺少一些郵政編碼。 如果缺少郵政編碼,我想使用基於城市的通用郵政編碼。 例如,城市為聖何塞,因此郵政編碼應為通用的“ SJ_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_1d [布爾]的無效dtype”
在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"
某些無效的解決方案
df.loc[df['First Season'] > 1990, 'First Season'] = 1
,我用作df.loc[foundit, 'zip_cd'] = 'SJ_zipcode'
DataFrame:替換列中的所有值,基於符合條件且與條件替換熊貓相似/相同 df['c'] = df.apply( lambda row: row['a']*row['b'] if np.isnan(row['c']) else row['c'], axis=1)
但我沒有將值https://datascience.stackexchange.com/questions/17769/how-to-fill-missing-value-based-on-other-columns-in-pandas-dataframe where
解決方案,但是,似乎用nan替換了不滿足條件的值-但nan值沒有幫助https://pandas.pydata.org/pandas-docs/stable/reference/ api / pandas.DataFrame.where.html replace
的示例將pandas dataframe列中的幾個值替換為另一個值 另一個“想要”; 我想用值更新一個數據框,我不想創建一個新的數據框。
嘗試這個:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.