如果DataFrame有两列:
df=pd.DataFrame({'City':['New York', 'New jersey', 'California'], 'Population':[100000, 500000, 300000]})
如果City是'New York'或'California',我想在填充列中添加1000。我尝试过代码,但它没有改变原来的DF
df[(df['City']=='New York') | (df['City']=='California')]['Population']+1000
请告知是否有多种方法。
答案 0 :(得分:0)
df.loc[(df['City']=='New York') | (df['City']=='California'), 'Population'] += 1000
解决方案几乎就像用+
替换+=
一样简单:
df[(df['City']=='New York') | (df['City']=='California')]['Population'] += 1000
但这会抛出一个SettingWithCopyWarning
。 (关于该警告的进一步阅读是here。)
答案 1 :(得分:0)
这是一个更具可读性的解决方案:
df.Population += df.City.isin(['New York', 'California']) * 1000
您可以使用isin代替那个长逻辑表达式。它返回一个布尔向量,可以乘以1000并添加到填充列。
不要忘记+
会返回一个新系列(DataFrame的列)。如果要修改现有版本,则必须使用+=
将其分配回来。