【发布时间】:2018-12-28 20:03:25
【问题描述】:
如何迭代 Pandas DataFrame 的成对行?
例如:
content = [(1,2,[1,3]),(3,4,[2,4]),(5,6,[6,9]),(7,8,[9,10])]
df = pd.DataFrame( content, columns=["a","b","interval"])
print df
输出:
a b interval
0 1 2 [1, 3]
1 3 4 [2, 4]
2 5 6 [6, 9]
3 7 8 [9, 10]
现在我想做类似的事情
for (indx1,row1), (indx2,row2) in df.?
print "row1:\n", row1
print "row2:\n", row2
print "\n"
应该输出哪个
row1:
a 1
b 2
interval [1,3]
Name: 0, dtype: int64
row2:
a 3
b 4
interval [2,4]
Name: 1, dtype: int64
row1:
a 3
b 4
interval [2,4]
Name: 1, dtype: int64
row2:
a 5
b 6
interval [6,9]
Name: 2, dtype: int64
row1:
a 5
b 6
interval [6,9]
Name: 2, dtype: int64
row2:
a 7
b 8
interval [9,10]
Name: 3, dtype: int64
有没有内置的方法来实现这一点? 我查看了 df.groupby(df.index // 2) 和 df.itertuples 但这些方法似乎都没有达到我想要的效果。
编辑: 总体目标是获取一个布尔列表,指示“间隔”列中的间隔是否重叠。在上面的示例中,列表将是
overlaps = [True, False, False]
所以每对都有一个布尔值。
【问题讨论】:
-
你可以试试 shift,它本质上会返回一个“下一行”的数据框。
-
如何将 df 和 df.shift(1) 结合起来?
-
为什么要循环播放?发布您更大的问题..您可能不需要循环
-
数据框的一列在每一行中都包含一个区间,我想检查区间是否成对重叠。
-
@Lxndr 实际上,您的问题已被多次询问(间隔问题)。绝对不需要循环来执行此操作。随着数据框大小的增加,速度会变得非常慢
标签: python pandas loops dataframe