簡體   English   中英

基於條件在熊貓數據框列中的特殊字符上拆分字符串

[英]Splitting a string on a special character in a pandas dataframe column based on a conditional

我正在嘗試在我的 Pandas 數據框中的地址列中建立一致性。 我有一個 ZipCode 列,它有兩種格式:1) 87301 2) 87301-1234。 不是每一行都有連字符,所以當它出現時我需要在連字符上拆分。

我的數據如下所示:

State  ZIP
CA     85145-7045
PA     76913   

我嘗試了幾種方法來解決這個問題。 我試過了:

data['Zip_1'],data['Zip_2'] = data['Zip'].str.split('-').str

我試過了:

data['Zip'] = data['Zip'].str.split('-', n=1, expand=True)
data['Zip'] = data['Zip'][0]
data['Zip_drop'] = data['Zip'][1]

我也嘗試過使用 lambda 函數。

但是它只返回空值。

我希望新列對於沒有連字符的郵政編碼和連字符后的數字(如果它包含連字符)返回 NaN。 但是,新列只是為每個觀察值填充 NaN

您可以通過將“替換”與正則表達式結合使用來做到這一點。

第1步

example_df = pd.DataFrame({'State': ['CA', 'PA'],
                           'ZIP': ['85145-7045', '76913'] })

example_df

在此處輸入圖片說明

第2步

# Keep only the numbers before the hyphen (if any).
example_df = example_df.replace('\-\d*', '', regex=True)
example_df

輸出

獲取包含連字符的所有郵政編碼的數據框,並將其放在新列中

data['Zip Hyphen'] = data['Zip'].str.find('-')

然后,從帶有 Zip 列的數據框中,刪除包含連字符的任何行

 data = data.drop(data[data['Zip'].str.find('-')].index)

編輯:此代碼未經測試,但總體思路就在那里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM