如何按条件修改Pandas DataFrame中count列的单元格数据?
解决方案:Pandas条件修改count列数值
前提说明
原DataFrame的count列因创建方式为np.array混合类型,默认是字符串(object)类型,处理前需先转换为数值类型(或直接用字符串操作),以下提供三种实用实现方式:
方法1:数值运算(推荐,便于后续统计分析)
先将count转为整数类型,再通过条件判断对指定行的数值放大100倍:
import pandas as pd import numpy as np # 初始化原数据 temp = pd.DataFrame(np.array([['2022-10-13','one',123],['2022-10-13','two',77123], ['2022-10-13','three',451], ['2022-10-13','three',77]]), columns = ['date','reason','count']) # 转换count列为整数类型 temp['count'] = temp['count'].astype(int) # 使用np.where实现条件赋值:reason不等于two时乘以100,否则保持原值 temp['count'] = np.where(temp['reason'] != 'two', temp['count'] * 100, temp['count'])
方法2:通过loc定位修改
同样先转换类型,再用loc精准定位目标行修改数值:
# 初始化原数据(同上) temp = pd.DataFrame(np.array([['2022-10-13','one',123],['2022-10-13','two',77123], ['2022-10-13','three',451], ['2022-10-13','three',77]]), columns = ['date','reason','count']) temp['count'] = temp['count'].astype(int) # 定位reason不等于two的行,将count列乘以100 temp.loc[temp['reason'] != 'two', 'count'] *= 100
方法3:字符串拼接(保持字符串格式)
如果不需要数值类型,仅需在字符串末尾添加00,可直接操作:
# 初始化原数据(同上) temp = pd.DataFrame(np.array([['2022-10-13','one',123],['2022-10-13','two',77123], ['2022-10-13','three',451], ['2022-10-13','three',77]]), columns = ['date','reason','count']) # 条件拼接字符串 temp['count'] = np.where(temp['reason'] != 'two', temp['count'] + '00', temp['count'])
最终结果
三种方法均可得到目标DataFrame:
date reason count 0 2022-10-13 one 12300 1 2022-10-13 two 77123 2 2022-10-13 three 45100 3 2022-10-13 three 7700
内容的提问来源于stack exchange,提问作者DarknessPlusPlus
相关产品推荐
相关产品推荐

