根据另一列的值替换Pandas数据框的Column的值

时间:2019-08-27 20:18:36

标签: python pandas dataframe

当前的熊猫数据框:

   Chunk_Num |reading_id |imei
   ____________________________________
0    0          4       35475624
1    0          6       35475624
2    0          6       35475624
3    0          7       35475624
4    0          7       35475624
5    0          11      35475624

我需要将每2个索引分组为1个Chunk_Num。

也就是说:

1)将索引0,1的行分配给Chunk_Num = 0

2)将索引2,3的行分配给Chunk_Num = 1

3)将索引4,5的行分配给Chunk_Num = 2

需要o / p:

   Chunk_Num |reading_id |imei
   ____________________________________
0    0          4       35475624
1    0          6       35475624
2    1          6       35475624
3    1          7       35475624
4    2          7       35475624
5    2          11      35475624

现在,我有:

index_list= [0,1,2,3,4,5]
chunk_list_elements=[0,1,2]

for i , c in zip(index_list, chunk_list_elements): # 3rd el of chunk_list, is mapped to 3rd el of index_list.
    transition2_df.loc[i,'Chunk_Num']= c
    transition2_df.loc[i+1,'Chunk_Num']= c
    i= i+2
display(transition2_df)

那给了我

   Chunk_Num |reading_id |imei
   ____________________________________
0    0          4       35475624
1    1          6       35475624
2    2          6       35475624
3    2          7       35475624
4    0          7       35475624
5    0          11      35475624

我不确定我在这里缺少什么。除了使用zip()外,我还接受其他方法。

请帮助。

1 个答案:

答案 0 :(得分:1)

使用:

df['Chunk_Num'] = df.index // 2

df['Chunk_num'] = (df.index.notna().cumsum()-1)//2

输出:

   Chunk_Num  reading_id      imei
0          0           4  35475624
1          0           6  35475624
2          1           6  35475624
3          1           7  35475624
4          2           7  35475624
5          2          11  35475624