如何在For循环中有条件地更新多个类别的值

肯兰西·库玛·雷迪

我有一个DataFrame,其中“ B”是类别,“男孩”是事件,对于Boy {1,2,3,4}分配了B = 1;男孩= 1使用B表示10分钟,从12:00开始到End = 12:10,下一个男孩应该在End_Time [0]中使用它,就像B = 1一样,有四个样本,B = 2个不同的4个样本

输入样本:

B   Boy Start   End     Out
1   1   12:00   12:10   0:10
1   2   12:01   12:11   0:10
1   3   12:02   12:12   0:10
1   4   12:03   12:13   0:10
2   5   12:00   12:10   0:05
2   6   12:01   12:11   0:05
2   7   12:02   12:12   0:05
2   8   12:03   12:13   0:05
3   9   12:00   12:10   0:03
3   10  12:01   12:11   0:03
3   11  12:02   12:12   0:03
3   12  12:03   12:13   0:03

尝试过的代码:

data_1['End'] = pd.to_datetime(data_1['Start'] + pd.to_timedelta(data_1['Out'])
for i in range(1, len(data_1)):
    data_1.loc[i, 'Start'] = data_1.loc[i-1, 'End'] 

输出:

B   Boy Start   End     Out
1   1   12:00   12:10   0:10
1   2   12:10   12:20   0:10
1   3   12:20   12:30   0:10
1   4   12:30   12:40   0:10
2   5   12:40   12:45   0:05
2   6   12:45   12:50   0:05
2   7   12:50   12:55   0:05
2   8   12:55   13:00   0:05
3   9   13:00   13:03   0:03
3   10  13:03   13:06   0:03
3   11  13:06   13:09   0:03
3   12  13:09   13:12   0:03

代码失败:

new_Start_time = []
for i,item in data_1.groupby('B'):
    temp_list = [item.iloc[0,2]]
    list_all  = [item.iloc[0,3]]
    for j in range(len(list_all)):
        temp_list[j+1] = [list_all[j] for i in range(len(list_all) - 1) ]
        temp_list.append(temp_list[j])
    new_Start_time.extend(temp_list)
data_1['new_Start_time'] = new_Start_time   

错误:IndexError:列表分配索引超出范围

预期结果 :

B   Boy Start   End     Out
1   1   12:00   12:10   0:10
1   2   12:10   12:20   0:10
1   3   12:20   12:30   0:10
1   4   12:30   12:40   0:10
2   5   12:00   12:05   0:05
2   6   12:05   12:10   0:05
2   7   12:10   12:15   0:05
2   8   12:15   12:20   0:05
3   9   12:00   12:03   0:03
3   10  12:03   12:06   0:03
3   11  12:06   12:09   0:03
3   12  12:09   12:12   0:03

提前致谢

戴维·布雷克斯

我找到了解决方案。如果您的桌子真的很大,那不是最好的选择,但是它可以工作。首先,我将列转换为datetime和timedelta:

df["Start"] = pd.to_datetime(df["Start"], format='%H:%M')
df["End"] = pd.to_datetime(df["End"], format='%H:%M')
df["Out"] = pd.to_timedelta("0"+df["Out"]+":00")

然后,代码创建新的开始和结束列:

new_start =[]
new_end = []
for i, group in df.groupby("B"):
    temp_start =[]
    temp_end = []
    out = group.iloc[0,4]
    for j in range(0,group.shape[0]):
        if j==0:
            temp_start.append(group.iloc[0,2])
            temp_end.append(group.iloc[0,2]+out)
        else:
            temp_start.append(temp_end[j-1])
            temp_end.append(temp_start[j]+out)
    new_start.extend(temp_start)
    new_end.extend(temp_end)

现在,使用新值更新旧的开始和结束列:

df["Start"]= new_start
df["End"] = new_end
df

输出:

    B  Boy  Start               End                 Out
0   1   1   1900-01-01 12:00:00 1900-01-01 12:10:00 00:10:00
1   1   2   1900-01-01 12:10:00 1900-01-01 12:20:00 00:10:00
2   1   3   1900-01-01 12:20:00 1900-01-01 12:30:00 00:10:00
3   1   4   1900-01-01 12:30:00 1900-01-01 12:40:00 00:10:00
4   2   5   1900-01-01 12:00:00 1900-01-01 12:05:00 00:05:00
5   2   6   1900-01-01 12:05:00 1900-01-01 12:10:00 00:05:00
6   2   7   1900-01-01 12:10:00 1900-01-01 12:15:00 00:05:00
7   2   8   1900-01-01 12:15:00 1900-01-01 12:20:00 00:05:00
8   3   9   1900-01-01 12:00:00 1900-01-01 12:03:00 00:03:00
9   3   10  1900-01-01 12:03:00 1900-01-01 12:06:00 00:03:00
10  3   11  1900-01-01 12:06:00 1900-01-01 12:09:00 00:03:00
11  3   12  1900-01-01 12:09:00 1900-01-01 12:12:00 00:03:00

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在useEffect中更新状态的条件组件中有条件地渲染?

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

如何在Excel中有条件地匹配

来自分类Dev

如何在Excel中有条件地VLOOKUP?

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

如何在无状态组件中有条件地更新状态?

来自分类Dev

如何在熊猫中有条件地填充列中的空值

来自分类Dev

如何在python中有条件地选择上一行的值?

来自分类Dev

避免在Python循环中有条件地增加计数器

来自分类Dev

在Bash中有条件地为for循环中的数组分配位置参数?

来自分类Dev

如何在python词典中有条件值?

来自分类Dev

如何使用 Angular 7 中的模块有条件地绑定 ngFor 循环中的类或属性值?

来自分类Dev

从多个单元中有条件地减去

来自分类Dev

在Nginx配置中有条件地映射值

来自分类Dev

在 groupby 熊猫中有条件地设置值

来自分类Dev

如何从向量中有条件地找到几个值?

来自分类Dev

如何在R中的数据框中有条件地选择列

来自分类Dev

如何在AngularJS模板中有条件地显示跨度?

来自分类Dev

如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

来自分类Dev

如何在Swift中有条件地为tvOS编译

来自分类Dev

如何在angularJS指令中有条件地应用属性?

来自分类Dev

如何在React Native Component中有条件地包含图像?

来自分类Dev

如何在Spring Data REST投影中有条件地公开数据?

来自分类Dev

如何在Aurelia repeat.for中有条件地添加或删除CSS类?

来自分类Dev

如何在asp.net MVC视图中有条件地设置模型?

来自分类Dev

如何在熊猫中有条件地从不同的列中进行选择

来自分类Dev

如何在Vim中有条件地编辑文件

来自分类Dev

如何在Django Admin 1.5中有条件地否决删除尝试?

来自分类Dev

如何在一行中有条件地设置变量值?

Related 相关文章

  1. 1

    如何在useEffect中更新状态的条件组件中有条件地渲染?

  2. 2

    如何在Angular中有条件地渲染?

  3. 3

    如何在Excel中有条件地匹配

  4. 4

    如何在Excel中有条件地VLOOKUP?

  5. 5

    如何在有条件的js中有条件地应用标题

  6. 6

    如何在无状态组件中有条件地更新状态?

  7. 7

    如何在熊猫中有条件地填充列中的空值

  8. 8

    如何在python中有条件地选择上一行的值?

  9. 9

    避免在Python循环中有条件地增加计数器

  10. 10

    在Bash中有条件地为for循环中的数组分配位置参数?

  11. 11

    如何在python词典中有条件值?

  12. 12

    如何使用 Angular 7 中的模块有条件地绑定 ngFor 循环中的类或属性值?

  13. 13

    从多个单元中有条件地减去

  14. 14

    在Nginx配置中有条件地映射值

  15. 15

    在 groupby 熊猫中有条件地设置值

  16. 16

    如何从向量中有条件地找到几个值?

  17. 17

    如何在R中的数据框中有条件地选择列

  18. 18

    如何在AngularJS模板中有条件地显示跨度?

  19. 19

    如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

  20. 20

    如何在Swift中有条件地为tvOS编译

  21. 21

    如何在angularJS指令中有条件地应用属性?

  22. 22

    如何在React Native Component中有条件地包含图像?

  23. 23

    如何在Spring Data REST投影中有条件地公开数据?

  24. 24

    如何在Aurelia repeat.for中有条件地添加或删除CSS类?

  25. 25

    如何在asp.net MVC视图中有条件地设置模型?

  26. 26

    如何在熊猫中有条件地从不同的列中进行选择

  27. 27

    如何在Vim中有条件地编辑文件

  28. 28

    如何在Django Admin 1.5中有条件地否决删除尝试?

  29. 29

    如何在一行中有条件地设置变量值?

热门标签

归档