首页 > 解决方案 > 在遍历 dict_values 或列表中的数据帧时访问下一个 df ("v+1")

问题描述

我有一本字典,其中的值是数据框。我想根据与数据帧“v+1”的比较来修改数据帧“v”。如果我尝试这样的事情(所有代码仅供参考):

for v in dfs_dict.values():
    if v['Date'][0] == v+1['Date'][0]:
        v+1['Day'] = v['Day']

然后我不出所料地得到一个错误。具体来说:

TypeError: 'int' object is not subscriptable

如果我将这些数据帧存储在一个列表中并循环它,我会得到基本相同的错误。而且,当然,如果我改变方法以使用“v-1”代替,也会出现同样的错误。

我还尝试了一种方法,将数据帧列表转换为迭代器并用于next()访问“v+1”数据帧。当我这样做时,我没有收到错误,但它也没有给我我需要的结果(修改后的 df 列值)。不过,我对这种方法没有太多经验iter,所以它可能完全不适合我正在尝试做的事情,但为了完整性:

dfs_iter = iter(dataframes)
for i in dfs_iter:
    if i['Date'][0] == (next(dfs_iter)['Date'][0]):
        (next(dfs_iter)['Day']) = i['Day']

有没有人对我如何实现我的目标有任何 pythonic 建议?谢谢大家。

标签: pythonloopsdictionarytypeerrornext

解决方案


您的代码看起来很复杂。这种更简单的方法怎么样?

for element in iter(data):
    process(element) 

推荐阅读