我有两个数据框,其中包含以下值:
DF1
Cash
Date
2011-01-10 -5114.85
2011-01-11 -5000.85
DF2
GOOG AAPL XOM IBM Cash
2011-01-10 0.0 0.0 0.0 0.0 -19.900
2011-01-11 0.0 0.0 0.0 0.0 0.000
对于df1中的每个条目,我检查df2中是否存在该索引。如果索引存在,那么我想将df1中的值与df2一起添加到df2中;更新df2中的值,表示存在于df1中。
我正在尝试使用以下代码实现此目的:
for each in df1.index:
if each in df2.index:
df2.loc[each]['Cash'] = df1.loc[each]['Cash'] + df2.loc[each]['Cash']
控制台中的输出是:
SettingWithCopyWarning: 尝试在DataFrame的切片副本上设置值 请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy df2.loc [each] ['Cash'] = df1.loc [each] ['Cash'] + df2.loc [each] ['Cash']
我假设警告仍然允许我执行代码并在df2 ...
中更新我的列值错误
交易数据框未填充更新后的值。
预期输出
GOOG AAPL XOM IBM Cash
2011-01-10 0.0 0.0 0.0 0.0 -5134.75
2011-01-11 0.0 0.0 0.0 0.0 -5000.85
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
您可以使用df.index.intersection
查找常用索引,然后使用loc
访问所有相关行并添加。
idx = df1.index.intersection(df2.index)
df2.loc[idx, 'Cash'] += df1.loc[idx, 'Cash']
print(df2)
GOOG AAPL XOM IBM Cash
2011-01-10 0.0 0.0 0.0 0.0 -5134.75
2011-01-11 0.0 0.0 0.0 0.0 -5000.85