簡體   English   中英

用pandas DataFrame中另一列的值填充一列

[英]Fill one column with value of another column in pandas DataFrame

我的數據框看起來像這樣:

ID    ADDRESS                   PRICE    LOCATION
1     NEW YORK, BROOKLYN, 1      500     NEW YORK
2     LONDON, LONDON, 2          400     " "
3     City of MANCHESTER, 3      200     " "
.
.

我想用地址中的值填充“”。 我試過這樣的事情:

i = 2008
for addrs, loc in zip(addr[2008:].ADDRSS, addr[2008:].LOCATION):
     if addrs.find('NEW YORK') != -1:
          addr[i].LOCATION = 'NEW YORK'
     if addrs.find('LONDON') != -1:
          addr[i].LOCATION = 'LONDON'
     if addrs.find('PRAGUE') != -1:
          addr[i].LOCATION = 'PRAGUE'
     i = i + 1
.
.
.

位置沒有從某行填寫,所以這就是為什么有addr[2008:]。 位置不會改變,所以我可以讓它們這樣寫。 此代碼返回 KeyError。 我真的不知道,這有什么問題,有人可以幫忙嗎?

編輯:

預期輸出應該是這樣的:

ID    ADDRESS                   PRICE    LOCATION
1     NEW YORK, BROOKLYN, 1      500     NEW YORK
2     LONDON, LONDON, 2          400     LONDON
3     City of MANCHESTER, 3      200     MANCHESTER
.
.

問題在於,在地址欄中,有多種選項如何提及城市,因此僅使用 , 進行簡單拆分是行不通的。

你可以這樣做:

df.loc[df['LOCATION'].eq(' '), 'LOCATION'] = df['ADDRESS']

據我了解,如果LOCATIONS欄有“”號,ADDRESS欄會填入國家信息。

以下代碼對此很有用。

addr['LOCATION'].apply(lambda x: x if x != " " else addr['ADDRESS'].split(sep=',')[0])

我希望這個對你有用。

擴展上面的另一個答案

df.loc[df['LOCATION'].eq(' '), 'LOCATION'] = df.loc[df['LOCATION'].eq(' '), 'ADDRESS'].str.extract('(NEW YORK|LONDON|MANCHESTER)').values

對於更多城市,您當然需要調整正則表達式字符串

暫無
暫無

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

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