簡體   English   中英

根據另一列上的條件修改Pandas DataFrame列

[英]Modifying a Pandas DataFrame column based on conditions on another column

如果DataFrame有兩列:

df=pd.DataFrame({'City':['New York', 'New jersey', 'California'], 'Population':[100000, 500000, 300000]})

如果“城市”是“紐約”或“加利福尼亞”,我想在“人口”列中添加1000。 我嘗試過代碼,但它不會更改原始DF

df[(df['City']=='New York') | (df['City']=='California')]['Population']+1000

請告知是否有多種方法。

df.loc[(df['City']=='New York') | (df['City']=='California'), 'Population'] += 1000

該解決方案幾乎就像用+=替換+一樣簡單:

df[(df['City']=='New York') | (df['City']=='California')]['Population'] += 1000

但這將拋出SettingWithCopyWarning (有關該警告的更多信息,請點擊此處 。)

這是一個更具可讀性的解決方案:

df.Population += df.City.isin(['New York', 'California']) * 1000

您可以使用isin代替該長邏輯表達式。 它返回一個布爾向量,該向量可以乘以1000並添加到種群列中。

不要忘記+返回一個新系列(DataFrame的列)。 如果要修改現有的,則必須用+=分配回來。

暫無
暫無

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

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