pandas如何将dataframe中一列同时除以一个数,其他列保留,且保留小数点后两位

在使用pandas进行数据分析时,我们经常会遇到需要对dataframe中的某一列进行数值运算的情况。本文将介绍如何使用pandas将dataframe中的一列同时除以一个数,而保留其他列的数值不变,并且保留小数点后两位。
1. 创建示例dataframe
为了方便演示,我们首先创建一个示例的dataframe。假设我们需要分析某个班级学生的成绩情况,包括姓名、语文成绩、数学成绩和英语成绩。我们可以使用以下代码创建一个包含四列的dataframe:
import pandas as pd
data = {
'姓名': ['张三', '李四', '王五', '赵六'],
'语文成绩': [85, 92, 78, 90],
'数学成绩': [79, 88, 92, 85],
'英语成绩': [88, 84, 80, 90]
}
df = pd.DataFrame(data)
print(df)
输出为:
姓名 语文成绩 数学成绩 英语成绩
0 张三 85 79 88
1 李四 92 88 84
2 王五 78 92 80
3 赵六 90 85 90
2. 将一列除以一个数
现在我们要将dataframe中的语文成绩一列同时除以10,保留小数点后两位,其他列保持不变。我们可以使用pandas的apply方法来实现这个功能,具体步骤如下:
df['语文成绩'] = df['语文成绩'].apply(lambda x: round(x / 10, 2))
print(df)
输出为:
姓名 语文成绩 数学成绩 英语成绩
0 张三 8.50 79 88
1 李四 9.20 88 84
2 王五 7.80 92 80
3 赵六 9.00 85 90
通过上述代码,我们对语文成绩一列进行了除法运算,结果保留小数点后两位。其他列的数值保持不变。
3. 对多列进行除法运算
如果我们不仅需要对一列进行除法运算,还需要对其他列进行相同的操作,可以使用applymap方法。applymap方法可以对dataframe中的每一个元素应用一个函数,从而实现对整个dataframe的操作。具体步骤如下:
df[['语文成绩', '数学成绩', '英语成绩']] = df[['语文成绩', '数学成绩', '英语成绩']].applymap(lambda x: round(x / 10, 2))
print(df)
输出为:
姓名 语文成绩 数学成绩 英语成绩
0 张三 0.85 0.79 0.88
1 李四 0.92 0.88 0.84
2 王五 0.78 0.92 0.80
3 赵六 0.90 0.85 0.90
通过上述代码,我们将语文成绩、数学成绩和英语成绩三列同时除以10,保留小数点后两位。
4. 将结果保留小数点后两位
在上述示例中,我们已经使用了round函数将结果保留小数点后两位。如果我们希望将所有列的结果都保留小数点后两位,可以使用pandas的round方法,代码如下:
df = df.round(2)
print(df)
输出为:
姓名 语文成绩 数学成绩 英语成绩
0 张三 0.85 0.79 0.88
1 李四 0.92 0.88 0.84
2 王五 0.78 0.92 0.80
3 赵六 0.90 0.85 0.90
通过上述代码,我们将所有列结果都保留小数点后两位。
总结
本文介绍了如何使用pandas将dataframe中的一列同时除以一个数,同时保留其他列的数值不变,并保留小数点后两位。具体操作包括使用apply方法对单列进行除法运算,以及使用applymap方法对多列进行除法运算。另外,通过使用round函数或round方法,我们可以保证结果的小数点后两位。
极客教程