python - 从一系列 Pandas 间隔中提取左右限制

标签 python pandas intervals

我想获取具有 pandas 间隔的列的间隔边距,并将它们写在“左”、“右”列中。 Iterrows 不起作用(文档说它不会用于写入数据)而且无论如何它都不是更好的解决方案。

import pandas as pd

i1 = pd.Interval(left=85, right=94)
i2 = pd.Interval(left=95, right=104)
i3 = pd.Interval(left=105, right=114)
i4 = pd.Interval(left=115, right=124)
i5 = pd.Interval(left=125, right=134)
i6 = pd.Interval(left=135, right=144)
i7 = pd.Interval(left=145, right=154)
i8 = pd.Interval(left=155, right=164)
i9 = pd.Interval(left=165, right=174)

data = pd.DataFrame(
    {
    "intervals":[i1,i2,i3,i4,i5,i6,i7,i8,i9],
    "left"     :[0,0,0,0,0,0,0,0,0],
    "right"    :[0,0,0,0,0,0,0,0,0]
    },
    index=[0,1,2,3,4,5,6,7,8]
)

#this is not working (has no effect):
for index, row in data.iterrows():
    print(row.intervals.left, row.intervals.right)
    row.left = row.intervals.left
    row.right = row.intervals.right

我们如何做:

data['left']=data['intervals'].left

data['right']=data['intervals'].right

谢谢!

最佳答案

创建一个 pandas.IntervalIndex从你的间隔。然后,您可以访问 .left.right 属性。

import pandas as pd

idx = pd.IntervalIndex([i1, i2, i3, i4, i5, i6, i7, i8, i9])  
pd.DataFrame({'intervals': idx, 'left': idx.left, 'right': idx.right})

    intervals  left  right
0    (85, 94]    85     94
1   (95, 104]    95    104
2  (105, 114]   105    114
3  (115, 124]   115    124
4  (125, 134]   125    134
5  (135, 144]   135    144
6  (145, 154]   145    154
7  (155, 164]   155    164
8  (165, 174]   165    174

另一种选择是使用 mapoperator.attrgetter(看吧,没有 lambda...):

from operator import attrgetter

df['left'] = df['intervals'].map(attrgetter('left'))
df['right'] = df['intervals'].map(attrgetter('right'))

df
    intervals left right
0    (85, 94]   85    94
1   (95, 104]   95   104
2  (105, 114]  105   114
3  (115, 124]  115   124
4  (125, 134]  125   134
5  (135, 144]  135   144
6  (145, 154]  145   154
7  (155, 164]  155   164
8  (165, 174]  165   174

关于python - 从一系列 Pandas 间隔中提取左右限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53996015/

相关文章:

python - 从 pip 安装时获取 git 提交编号和日期

python - 我想将数据框中的时间戳更改为日期时间

python - 如何检查 Python 2.5 中的类相等性?

javascript - AngularJS:我可以在一定时间间隔内重复调用一个函数吗?

python - 平均颜色有点错误。 (np.mean())

python - 在 Python 中使用周期性正态分布 (von Mises) 提取时间特征

python - Excel 使用 Python Pandas 合并 2 个工作表中的单元格

python - 如何使用 xlsxwriter 格式化索引列?

MySQL 的选择日期间隔

C:如何将 float 包裹到区间 [-pi, pi)