簡體   English   中英

使用 python pandas 將一列拆分為兩列

[英]Split one column into two columns with python pandas

我有一個城市的df,顯示為:

| id | location         |
|----|------------------|
| 1  | New York (NY)    |
| 2  | Los Angeles (CA) |
| 3  | Houston (TX)     |

我希望使用某種拆分/條帶,給我類似的東西

| id | city             | state |
|----|------------------|-------|
| 1  | New York         |   NY  |
| 2  | Los Angeles      |   CA  |
| 3  | Houston          |   TX  |

或者即使是三列,一是原始的,二是由代碼制成的。 我已經嘗試過類似的東西:

df[['city', 'state']] = df['location'].str.split("(", expand=True)
df['state'] = df['state'].str.strip(")")

哪個有效,但不是那么多,因為每個城市名稱后面都有一個空格,不應該。 如果我搜索一個城市,例如:

df[df['city'] == 'Houston'] 

它不會返回任何內容,但我必須編寫如下代碼:

df[df['city'] == 'Houston '] # note the empty space after code

給我一些有用的東西,但是當我進行合並或類似的事情時,那樣會讓我頭疼。

那么,有人對這段代碼有一些技巧嗎? 我在互聯網上找不到任何有用的東西。 它總是一個簡單的分割,或者一個簡單的條帶。 但我相信有一種更智能的模式可以做到這一點。

好吧,為什么不df['city'] = df['city'].strip()

使用str.extract

df = df.join(df.pop('location').str.extract(r'(.*)\s*\((.*)\)')
               .rename(columns={0: 'location', 1: 'state'}))
print(df)

# Output
   id      location state
0   1     New York     NY
1   2  Los Angeles     CA
2   3      Houston     TX

暫無
暫無

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

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