pandas - 在 Pandas 中调整间隔
问题描述
我在 pandas 中为频率表创建了间隔。第一个间隔看起来像这样:(22, 29] 并且从左侧打开 - 我希望第一个间隔从两侧关闭,如下所示:[22, 29]。我尝试了间隔 [0].closed = "两者”,但没有奏效。
intervals = pd.interval_range(start = 22, end = 64, freq = 7)
vek_freq_table = pd.Series([0,0,0,0,0,0], index = intervals)
for x in df.loc[df.loc[:,"c"].notnull(), "c"]:
for y in c_freq_table.index:
if int(x) in y:
c_freq_table.loc[y] +=1
break
解决方案
您必须使用列表理解(或循环)构建自己的区间索引:
intervals = [pd.Interval(i.left, i.right)
if no != 0 else pd.Interval(i.left, i.right, closed='both')
for (no, i) in enumerate(intervals)]
intervals
输出:
[Interval(22, 29, closed='both'),
Interval(29, 36, closed='right'),
Interval(36, 43, closed='right'),
Interval(43, 50, closed='right'),
Interval(50, 57, closed='right'),
Interval(57, 64, closed='right')]
注意:更简单的解决方案似乎只是更改第一个元素,例如:
new_first_elem = pd.Interval(intervals[0].left, intervals[0].right, closed='both')
intervals[0] = new_first_elem
但是,此代码会引发 TypeError:
TypeError: Index does not support mutable operations
推荐阅读
- c++ - C++ Xcode 构建失败,errno.h 未找到
- javascript - Sequelize Insert Cascade hasMany
- json - 无法将“Codable”(又名“Decodable & Encodable”)类型的值转换为预期的参数类型“T.Type”
- java - 如果 Kotlin 集合都是接口,那怎么能像类一样实例化呢?
- r - R中图例中的上标
- java - 词法分析器:汇编到 Java
- sql - SQL 在两行之间进行选择
- node.js - NodeJS cloudinary search API by context
- javascript - Axios 参数不起作用,但硬编码的 url 有效?
- c# - 如何在 datagridview c#.net 中使 DataGridViewButtonColumn 的标题不可点击