在遍历 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