如何解决python中的模块化算法来迭代熊猫数据框
解
group_hours = (df.hour <= df.hour.shift()).cumsum()
def insert_missing_hours(df):
return df.set_index('hour').reindex([0, 6, 12, 18]).reset_index()
df.groupby(group_hours).apply(insert_missing_hours).reset_index(drop=1)
好像:
hour value
0 0 1.0
1 6 2.0
2 12 3.0
3 18 4.0
4 0 5.0
5 6 6.0
6 12 7.0
7 18 8.0
8 0 NaN
9 6 9.0
10 12 10.0
11 18 11.0
12 0 NaN
13 6 NaN
14 12 12.0
15 18 13.0
16 0 14.0
17 6 NaN
18 12 NaN
19 18 NaN
说明 为了应用,reindex我需要确定要分组的行。我检查行的小时数是否小于或等于前一行的小时数。如果是这样,则标记一个新组。
insert_missing_hours
恰恰是reindex的子组[0, 6, 12, 18]
。
解决方法
好的,我有一个大数据框,例如:
hour value
0 0 1
1 6 2
2 12 3
3 18 4
4 0 5
5 6 6
6 12 7
7 18 8
8 6 9
9 12 10
10 18 11
11 12 12
12 18 13
13 0 14
我们不要在这里迷路。该列hour代表一天中的小时,从6到6个小时。Columnvalues很好,确切地说,这里的值仅作为示例,而不是实际的值。
如果您仔细查看该hour列,您会发现缺少几个小时。例如,第7行和第8行之间有一个间隔(缺少小时0的值)。还有更大的差距,例如在第10行和第11行之间(第00和06小时)。
我需要什么?我想检查何时缺少一个小时(当然还有一个值),并完成数据框,在其中插入带有相应小时数和np.nanas值的行。
我在想什么 我认为使用模块化算法可以轻松解决此问题,在这种情况下,使用mod 24(例如when)18 + 6 = 24 = 0 mod 24。因此,将计数器初始化为零,并加警告6 ,以确保在模块化算术mod 24中定义了该计数器,您可以验证每个hour小时是否都是对应的小时,如果不是,则插入具有相应小时和np.nan作为值的新行。
我不知道如何在python中执行模块化算术的实现以迭代数据帧列。
非常感谢你。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。