在遍历 dict_values 或列表中的数据帧时访问下一个 df ("v+1")

Posted

技术标签:

【中文标题】在遍历 dict_values 或列表中的数据帧时访问下一个 df ("v+1")【英文标题】:Accessing next df ("v+1") while looping over dataframes in dict_values or list 【发布时间】:2021-09-13 15:14:12 【问题描述】:

我有一本字典,其中的值是数据框。我想根据与数据帧“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 建议?谢谢大家。

【问题讨论】:

for v, vplus1 in zip(dataframes, dataframes[1:]) 怎么样? @j1-lee 这还不错!我不会想到的。 【参考方案1】:

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

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

【讨论】:

以上是关于在遍历 dict_values 或列表中的数据帧时访问下一个 df ("v+1")的主要内容,如果未能解决你的问题,请参考以下文章

Python中字典数据类型,字典.values()可以进行遍历,为啥不能通过角标进行获取元素?

如何在使用转义或引号在pyspark中的文件中写入数据帧时获得完全匹配? [复制]

'dict_values' object does not support indexing, Python字典dict中由value查key

从 dict_values 创建一个 pyspark 数据框

在迭代数据帧时,“序列的真值是模糊的”错误

在将其组合到R中的一个数据帧时,在不同的数据帧中保留重复的行名[重复]