微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中的模块化算法来迭代熊猫数据框

如何解决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 举报,一经查实,本站将立刻删除。