错误:在计算不同csv值之间的差异时,只能使用具有MultiIndex的元组索引

时间:2019-07-15 10:40:35

标签: python pandas dataframe plot

我有两个csv,其中每个ID必须减去一些值:

  • csv1:列(“ Id”,“ Val”,“日期”)
  • csv2:列(“ Id”,“ Val”,“日期”)

我必须为每个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

我该如何解决?

0 个答案:

没有答案