我有两个csv,其中每个ID必须减去一些值:
我必须为每个ID减去csv1的value [i]到csv2的value [i],直到获得该ID的值,然后重复以下ID直到覆盖所有ID。我的代码是:
for index in range(1, len(csv1)):
diff = diff[(csv1.iloc[index]['Value'] - csv2.iloc[index]['Value'])['Value']]
#if csv1 subtracts 0 from csv2, meaning the csv1 is longer than csv2, breaks
if((csv1.iloc[index]['Value'] - csv2.iloc[index]['Value']) == csv1.iloc[index]['Value']):
break
print(diff)
plt.plot(kind='line', x='Date', y='Value', color='blue', label='diff')
结果将类似于:
ID diff date
0 id1 5.0 timestamp1
1 id1 6.0 timestamp2
2 id2 8.0 timestamp3
我可以使用zip(),但我不知道如何将其用于两个不同的数据帧以及结果图。我该如何解决这个问题? 谢谢
编辑: 我使用合并方式修改了代码,如下所示:
csv2 = csv2.rename(columns={'Date':'Date2', 'Value':'Value2'})
#merge
res = pd.merge(csv1, csv2, how='left', on=['ID'])
for index in range(1, len(csv1)):
diff = pd.DataFrame(res.loc[index][:, res.columns.str.startswith('Value1')].values - res.loc[index][:, res.columns.str.startswith('Value2')].values, columns=['Result'])
#join
if(res.loc[index][:, res.columns.str.startswith('Value1')].values - res.loc[index][:, res.columns.str.startswith('Value2')].values) == res.loc[index][:, res.columns.str.startswith('Value1')].values:
break
res = res.join(diff)
print(res)
但是我得到了错误:
ValueError: Can only tuple-index with a MultiIndex
我该如何解决?