Python 向数据帧添加校正列

Python 向数据帧添加校正列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个从csv文件中读取的熊猫数据框,带有df=pd.read\u csv(“data.csv”): 我还有一个带有更正的数据帧df_corr=pd.read\u csv(“corrections.csv”) 如果日期和位置匹配,我如何应用这些更正以获得以下内容 date,location,value1,value2 2020-01-01,place1,1,2 2020-01-02,place2,4,8 2020-01-03,place2,4,9 编辑: 我得到了两个很好的答案,决定使用se

我有一个从csv文件中读取的熊猫数据框,带有
df=pd.read\u csv(“data.csv”)

我还有一个带有更正的数据帧
df_corr=pd.read\u csv(“corrections.csv”)

如果日期和位置匹配,我如何应用这些更正以获得以下内容

date,location,value1,value2
2020-01-01,place1,1,2
2020-01-02,place2,4,8
2020-01-03,place2,4,9
编辑: 我得到了两个很好的答案,决定使用
set\u index()
。这是我如何做到“非破坏性”的

df=pd.read\u csv(“data.csv”)
df_corr=pd.read_csv(“corr.csv”)
idx=['日期','位置']
df_corrected=df.set_索引(idx).add(
df_corr.set_索引(idx).重命名(
列={“值”:“值1”}),填充值=0
).astype(int).reset_index()

看起来您希望将
日期
位置
列上的两个数据帧连接起来。之后,只需添加
value1
value
列(最后删除包含更正的列),即可应用更正

#加入日期和位置列。
df_corrected=pd.merge(df,df_corr,on=['date','location'],how='left')
#通过添加列应用更正。
df_corrected.value1=df_corrected.value1+df_corrected.value1
#放下修正栏。
df_已更正。drop(columns='value',inplace=True)

将日期和位置设置为两个数据帧中的索引,将两者相加并填充

df.set_index(['date','location'], inplace=True)
df1.set_index(['date','location'], inplace=True)
df['value1']=(df['value1']+df1['value']).fillna(df['value1'])

这将失败,因为您缺少位置我必须指定merge(how='outer'),否则将删除行,我必须添加
df\u corrected.value1=df\u corrected.value1.fillna(0).astype(int)
。我明白了,否则是个好消息。所以修正是被修正事物的子集。在这种情况下,我认为您实际上想要做的是一个
连接,而不是外部连接。我更新了我的答案。是的,这可能更有意义。在我的例子中,对于不存在的条目,我没有任何更正值,所以我没有注意到。
date,location,value1,value2
2020-01-01,place1,1,2
2020-01-02,place2,4,8
2020-01-03,place2,4,9
df.set_index(['date','location'], inplace=True)
df1.set_index(['date','location'], inplace=True)
df['value1']=(df['value1']+df1['value']).fillna(df['value1'])