python 如果第一列中的数字是整数,则更新第二列

kyvafyod  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(92)

我有一个 Dataframe 如下:

A    |    B    | 
-----------------
 AA   |    101  |   
 AA   |    102  |    
 AA   |    103.5|    
 AA   |    104  |    
 AA   |    105  |

基本上,我想添加一个增加1的列,但如果B是一个十进制数,则它会跳过它,这样我就得到了一个如下所示的 Dataframe :

A    |    B    |    C
------------------------
 AA   |    101  |    1
 AA   |    102  |    2
 AA   |    103.5|    
 AA   |    104  |    3
 AA   |    105  |    4

我试着用这样的方式:

df.insert(2, 'C', range(1,  len(df)))

df.loc[is_integer(df['order']), 'detailed_category_id'] =...

但我不太确定这是否正确,所以任何帮助将不胜感激,谢谢!

xwbd5t1u

xwbd5t1u1#

可以使用df['B'].eq(df['B'].astype(int))检查值是否为整数,然后使用此掩码为掩码的cumsum建立布尔索引:

m = df['B'].eq(df['B'].astype(int))
df.loc[m, 'C'] = m.cumsum()

print(df)

如果您在A中有组,并希望重新开始对新组计数,则使用groupby.cumsum

df.loc[m, 'C'] = m.groupby(df['A']).cumsum()

输出:

A      B    C
0  AA  101.0  1.0
1  AA  102.0  2.0
2  AA  103.5  NaN
3  AA  104.0  3.0
4  AA  105.0  4.0

相关问题