Pandas 基于列值创建列-在列上循环
我想创建一个新的专栏“Group”。列“Step_ID”中的整数值应在循环中从1转换为4。见下图 尝试: 输出:Pandas 基于列值创建列-在列上循环,pandas,loops,calculated-columns,Pandas,Loops,Calculated Columns,我想创建一个新的专栏“Group”。列“Step_ID”中的整数值应在循环中从1转换为4。见下图 尝试: 输出: Step_ID Group 0 1 1 1 1 1 2 2 2 3 2 2 4 3 3 5 4 4 6 5 1 7 6 2 8 6 2 9
Step_ID Group
0 1 1
1 1 1
2 2 2
3 2 2
4 3 3
5 4 4
6 5 1
7 6 2
8 6 2
9 7 3
10 8 4
11 8 4
12 9 1
13 10 2
14 11 3
15 11 3
将熊猫作为pd导入
数据={'Step_ID':[1,1,2,2,3,4,5,6,6,7,8,8,9,10,11,11]}
df1=pd.DataFrame(数据)
#需要减/加1,这样得到的是1-4,而不是0-3
df1['group']=((df1['Step_ID']-1)%4)+1
df1
步骤ID
组
0
1.
1.
1.
1.
1.
2.
2.
2.
3.
2.
2.
4.
3.
3.
5.
4.
4.
6.
5.
1.
7.
6.
2.
8.
6.
2.
9
7.
3.
10
8.
4.
11
8.
4.
12
9
1.
13
10
2.
14
11
3.
15
11
3.
我不确定OP会如何处理边缘案件。如果Step_ID的值跳过一个数字(即[1,2,4]),此解决方案将把它与[1,2,3]一样处理,效果很好。谢谢。@Parsyk Np.)谢谢你的留言。但它没有按要求计算。将该表与您的结果和我的结果进行比较。对不起,我尝试重新检查该表,但我无法发现遗漏的值。你能给我介绍一下吗?谢谢。它现在工作得很好。
df['Group'] = (df.Step_ID % 4).replace(0 ,4)
Step_ID Group
0 1 1
1 1 1
2 2 2
3 2 2
4 3 3
5 4 4
6 5 1
7 6 2
8 6 2
9 7 3
10 8 4
11 8 4
12 9 1
13 10 2
14 11 3
15 11 3