繁体   English   中英

如何从 dataframe 中的另一列按条件创建新组?

[英]How to create new group by condition from another column in dataframe?

所以我有这样的数据

data = [['A', 0], ['A', 1], ['A', 2], ['A', 15], ['A', 2], ['A', 12],['B',1],['B',3]]
df = pd.DataFrame(data, columns = ['name', 'interval'])

    name    interval
0   A       0
1   A       1
2   A       2
3   A       15
4   A       2
5   A       12
6   B       1
7   B       3

所以我想根据间隔创建一个新名称(如果间隔>10,则生成新名称)但仍然使用以前的名称(这只是一个示例名称)

    name    interval    new_name
0   A       0           A_0
1   A       1           A_0
2   A       2           A_0
3   A       15          A_1
4   A       2           A_1
5   A       12          A_2
6   B       1           B_0
7   B       3           B_0

我当前的代码正在使用 for 访问每一行,还有其他想法来处理它吗? 谢谢

######################

感谢 Rutger 的想法。 这是流程怎么做

    name    interval    condition  cumsum   new_name(name+"_"+cumsum)
0   A       0           False      0        A_0
1   A       1           False      0        A_0
2   A       2           False      0        A_0
3   A       15          True       1        A_1
4   A       2           False      1        A_1
5   A       12          True       2        A_2
6   B       1           False      0        B_0
7   B       3           False      0        B_0

代码的详细信息在 Rutger 的回答中

我认为最简单的方法是从创建 bool 系列开始,然后像这样创建新字段:

df['large_interval'] = 10 < df['interval']
df['new_name'] = df['name'] + '_' + df.groupby('name')['large'].cumsum().astype(str)

在第二行,它计算每组经过了多少大间隔。 该值用作字符串并在名称和_之后添加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM