[英]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.