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