首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pandas:计算多列的百分比,将结果保存在新列中-最好的方法

Pandas是一个基于Python的数据分析库,提供了丰富的数据结构和数据分析工具,可以方便地进行数据处理和分析。在Pandas中,计算多列的百分比并将结果保存在新列中,可以使用以下方法:

  1. 使用apply函数:可以通过定义一个自定义函数,然后使用apply函数将该函数应用到多列上,计算百分比并保存结果到新列中。示例代码如下:
代码语言:txt
复制
import pandas as pd

# 创建示例数据
data = {'A': [10, 20, 30],
        'B': [5, 10, 15],
        'C': [2, 4, 6]}

df = pd.DataFrame(data)

# 定义计算百分比的函数
def calculate_percentage(row):
    total = row['A'] + row['B'] + row['C']
    row['Percentage'] = (row['A'] / total) * 100
    return row

# 使用apply函数应用计算百分比的函数
df = df.apply(calculate_percentage, axis=1)

print(df)

输出结果:

代码语言:txt
复制
    A   B  C  Percentage
0  10   5  2   62.500000
1  20  10  4   66.666667
2  30  15  6   68.181818
  1. 使用eval函数:Pandas的eval函数可以对DataFrame进行快速的计算和表达式求值。可以使用eval函数直接计算百分比并保存结果到新列中。示例代码如下:
代码语言:txt
复制
import pandas as pd

# 创建示例数据
data = {'A': [10, 20, 30],
        'B': [5, 10, 15],
        'C': [2, 4, 6]}

df = pd.DataFrame(data)

# 使用eval函数计算百分比并保存结果到新列中
df['Percentage'] = df.eval('(A / (A + B + C)) * 100')

print(df)

输出结果:

代码语言:txt
复制
    A   B  C  Percentage
0  10   5  2   62.500000
1  20  10  4   66.666667
2  30  15  6   68.181818

以上两种方法都可以实现计算多列的百分比并将结果保存在新列中。根据具体的需求和数据量大小,选择合适的方法进行计算。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pandas 高性能优化小技巧

但是很多新手在使用过程中会发现pandas的dataframe的性能并不是很高,而且有时候占用大量内存,并且总喜欢将罪名归于Python身上(lll¬ω¬),今天我这里给大家总结了在使用Pandas的一些技巧和代码优化方法...1.2apply方法 dataframe是一种列数据,apply对特定的轴计算做了优化,在针对特定轴(行/列)进行运算操作的时候,apply的效率甚至比iterrow更高. def loop_iterrows_test...因此,我们在使用pandas进行计算的时候,如果可以使用内置的矢量方法计算最好选用内置方法,其次可以考虑apply方法,如果对于非轴向的循环可以考虑iterrow方法。...在底层的设计中,pandas按照数据类型将列分组形成数据块(blocks)。pandas使用ObjectBlock类来表示包含字符串列的数据块,用FloatBlock类来表示包含浮点型列的数据块。...在object列中的每一个元素实际上都是存放内存中真实数据位置的指针。 category类型在底层使用整型数值来表示该列的值,而不是用原值。Pandas用一个字典来构建这些整型数据到原数据的映射关系。

3K20

整理了25个Pandas实用技巧

从剪贴板中创建DataFrame 假设你将一些数据储存在Excel或者Google Sheet中,你又想要尽快地将他们读取至DataFrame中。 你需要选择这些数据并复制至剪贴板。...神奇的是,pandas已经将第一列作为索引了: ? 需要注意的是,如果你想要你的工作在未来可复制,那么read_clipboard()并不值得推荐。...类似地,你可以通过mean()和isna()函数找出每一列中缺失值的百分比。 ? 如果你想要舍弃那些包含了缺失值的列,你可以使用dropna()函数: ?...一个字符串划分成多列 我们先创建另一个新的示例DataFrame: ? 如果我们需要将“name”这一列划分为三个独立的列,用来表示first, middle, last name呢?...我们可以通过链式调用函数来应用更多的格式化: ? 我们现在隐藏了索引,将Close列中的最小值高亮成红色,将Close列中的最大值高亮成浅绿色。 这里有另一个DataFrame格式化的例子: ?

2.8K40
  • 整理了25个Pandas实用技巧(下)

    从剪贴板中创建DataFrame 假设你将一些数据储存在Excel或者Google Sheet中,你又想要尽快地将他们读取至DataFrame中。 你需要选择这些数据并复制至剪贴板。...: 神奇的是,pandas已经将第一列作为索引了: 需要注意的是,如果你想要你的工作在未来可复制,那么read_clipboard()并不值得推荐。...类似地,你可以通过mean()和isna()函数找出每一列中缺失值的百分比。...一个字符串划分成多列 我们先创建另一个新的示例DataFrame: 如果我们需要将“name”这一列划分为三个独立的列,用来表示first, middle, last name呢?...我们可以通过链式调用函数来应用更多的格式化: 我们现在隐藏了索引,将Close列中的最小值高亮成红色,将Close列中的最大值高亮成浅绿色。

    2.4K10

    Excel与pandas:使用applymap()创建复杂的计算列

    标签:Python与Excel,pandas 我们之前讨论了如何在pandas中创建计算列,并讲解了一些简单的示例。...通过将表达式赋值给一个新列(例如df['new column']=expression),可以在大多数情况下轻松创建计算列。然而,有时我们需要创建相当复杂的计算列,这就是本文要讲解的内容。...准备演示的数据框架 看一看下面的例子,有一个以百分比表示的学生在校平均成绩列表,我们希望将其转换为字母顺序的分数(即a、B、C、D、F等),分数阈值如下所示: A:>=90 B:80<=且<90 C:70...pandas applymap()方法 pandas提供了一种将自定义函数应用于列或整个数据框架的简单方法,就是.applymap()方法,这有点类似于map()函数的作用。...图3 我们仍然可以使用map()函数来转换分数等级,但是,需要在三列中的每一列上分别使用map(),而applymap()能够覆盖整个数据框架(多列)。

    3.9K10

    Pandas 秘籍:1~5

    通常,这些新列将从数据集中已有的先前列创建。 Pandas 有几种不同的方法可以向数据帧添加新列。 准备 在此秘籍中,我们通过使用赋值在影片数据集中创建新列,然后使用drop方法删除列。...第 10 步验证百分比在 0 到 1 之间。 更多 除了insert方法的末尾,还可以将新列插入数据帧中的特定位置。...手动排序此秘籍中的列容易受到人为错误的影响,因为很容易错误地忘记新列列表中的列。 步骤 5 通过将新的列顺序作为列表传递给索引运算符来完成重新排序。 现在,这个新顺序比原来的要明智得多。...Pandas 定义了内置的len函数以返回行数。 步骤 2 和步骤 3 中的方法将每一列汇总为一个数字。 现在,每个列名称都是序列中的索引标签,其汇总结果为相应的值。...这在第 3 步中得到确认,在第 3 步中,结果(没有head方法)将返回新的数据列,并且可以根据需要轻松地将其作为列附加到数据帧中。axis等于1/index的其他步骤将返回新的数据行。

    37.6K10

    Pandas tricks 之 transform的用法

    由于是多行对一行的关联,关联上的就会将总金额重复显示多次,刚好符合我们后面计算的需要。结果如上图所示。...3.计算占比 有了前面的基础,就可以进行最终计算了:直接用商品金额ext_price除以订单总额sum_price。并赋值给新的列pct即可。 ?...4.格式调整 为了美观,可以将小数形式转换为百分比形式,自定义函数即可实现。 ? 思路二: 对于上面的过程,pandas中的transform函数提供了更简洁的实现方式,如下所示: ?...这种方法在需要对多列分组的时候同样适用。 多列分组使用transform 为演示效果,我们虚构了如下数据,id,name,cls为维度列。 ?...我们想求:以(id,name,cls)为分组,每组stu的数量占各组总stu的比例。使用transform处理如下: ? 同样再次计算占比和格式化,得到最终结果: ?

    2.1K30

    Python报表自动化

    这样计算分成贷款金额时就只需要将新表的贷款金额及合并成一列的分成比例进行相乘。得出每个分成比例对于的分成贷款金额,最后将分成贷款金额按照单位及用途进行数据透视。...3.4数据追加合并 接下来我们需求是将三个分离的表进行纵向的拼接。在我们的例子中,需要将三个表的单位及分成比例字段追加在同一列。但是目前三个新表中的单位及分成比例字段名字是不一致的,不能直接追加。...从以下输出结果可知存在空值的记录已经被删除。...注意到分成比例并非百分比格式,我们需要将其转化为百分比(除以100)。插入新列可以使用insert()函数,也可以直接以索引的方式进行。为了演示,我们分别选择不同的方法插入百分比列及分成贷款金额列。...使用普通索引方式插入分成贷款金额列 data4["分成贷款金额"]=data4["贷款金额"]*data4["分成百分比"]/10000 # 除以10000,将结果单位换算为万元 对插入数据后的表进行预览

    4.1K41

    高效的10个Pandas函数,你都用过吗?

    中最主要的数据分析库之一,它提供了非常多的函数、方法,可以高效地处理并分析数据。...Insert Insert用于在DataFrame的指定位置中插入新的数据列。默认情况下新列是添加到末尾的,但可以更改位置参数,将新列添加到任何位置。...Ture表示允许新的列名与已存在的列名重复 接着用前面的df: 在第三列的位置插入新列: #新列的值 new_col = np.random.randn(10) #在第三列位置插入新列,从0开始计算...,否则替换为other other:替换的特殊值 inplace:inplace为真则在原数据上操作,为False则在原数据的copy上操作 axis:行或列 将df中列value_1里小于5的值替换为...Isin Isin也是一种过滤方法,用于查看某列中是否包含某个字符串,返回值为布尔Series,来表明每一行的情况。

    4.2K20

    Pandas 学习手册中文第二版:11~15

    如果结果中的列在当前正在处理的DataFrame对象中不存在,则 Pandas 将插入NaN值。...然后,它为每组匹配的标签在结果​​中创建一行。 然后,它将来自每个源对象的那些匹配行中的数据复制到结果的相应行和列中。 它将新的Int64Index分配给结果。 合并中的连接可以使用多个列中的值。...,并将它们旋转到新DataFrame上的列中,同时为原始DataFrame的适当行和列中的新列填充了值。...然后将所有其他列制作为有助于描述数据的标识符列。 通常使用一个简单的例子可以最好地理解熔化的概念。...具体而言,在本章中,我们将介绍: 数据分析的拆分,应用和合并模式概述 按单个列的值分组 访问 Pandas 分组的结果 使用多列中的值进行分组 使用索引级别分组 将聚合函数应用于分组数据 数据转换概述

    3.4K20

    Pandas 秘籍:6~11

    Pandas 有直接的方法来计算每个航空公司的准时航班总数和百分比。...准备 在此秘籍中,我们使用employee数据集执行聚合,并按多列分组。 然后,我们使用unstack方法将结果重塑为一种格式,以便于比较不同组。...values参数采用将汇总的一列(或多列)。 还存在一个aggfunc参数,该参数带有一个或多个聚合函数,这些函数确定values参数中的列如何聚合。...它默认为均值,在此示例中,我们将其更改为计算总和。 此外,AIRLINE和ORG_AIR的某些唯一组合不存在。 这些缺失的组合将默认为结果数据帧中的缺失值。...在此步骤中,我们使用rolling方法根据最近五年数据的平均值来计算每年的新值。 例如,将 2011 年至 2015 年的预算中位数进行分组并取平均值。 结果是 2015 年的新值。

    34K10

    整理了 25 个 Pandas 实用技巧,拿走不谢!

    从剪贴板中创建DataFrame 假设你将一些数据储存在Excel或者Google Sheet中,你又想要尽快地将他们读取至DataFrame中。 你需要选择这些数据并复制至剪贴板。...类似地,你可以通过mean()和isna()函数找出每一列中缺失值的百分比。 ? 如果你想要舍弃那些包含了缺失值的列,你可以使用dropna()函数: ?...将一个由列表组成的Series扩展成DataFrame 让我们创建一个新的示例DataFrame: ? 这里有两列,第二列包含了Python中的由整数元素组成的列表。...这将告诉我们没定订单的总价格和数量。 19. 将聚合结果与DataFrame进行组合 让我们再看一眼orders这个DataFrame: ? 如果我们想要增加新的一列,用于展示每个订单的总价格呢?...你可以看到,每个订单的总价格在每一行中显示出来了。 这样我们就能方便地甲酸每个订单的价格占该订单的总价格的百分比: ? 20. 选取行和列的切片 让我们看一眼另一个数据集: ?

    3.2K10

    pandas数据分析输出excel产生文本形式存储的百分比数据,如何处理?

    关键词: python、pandas、to_excel、文本形式存储的数据 需求描述: 我用 python pandas 写了数据统计与分析脚本,并把计算结果用 pandas 的 to_excel()...但遇到一个问题:当我的老板和同事们打开 excel 文件时,发现百分比数值无法正常显示,提示为“文本形式存储的数据”。 ? 想让此类百分比数值正常显示,我该怎么办呢? ?...每次操作只能选中一列数据,如果有多列数据,就要分别操作多次。没办法偷懒。 ? 该方法看上去有点粗笨,但在紧急情况下,你能立即用,马上解决问题。...但实际情况是,数据统计分析的输出,通常有多个子表构成,所以还是得用回 to_excel() 吖! 2、多个子表,束手无措,作出取舍 我搜了非常多网页,尚未找到直接解决问题的方法。...在这种情况下,我只能从以下2个结果中二选一: 显示为百分数,打开 excel 表格时有异常提示:以文本形式存储的数据(即现状) 显示为小数,打开excel 表格时无异常提示 想要显示为小数,则直接注释掉脚本中的

    3.1K10

    精品教学案例 | 金融贷款数据的清洗

    查看数据中缺失值数量所占总数据量的百分比,从而使结果更加直观,以便进一步处理缺失值。 创建一个新的DataFrame数据表来存储每列数据中缺失值所占的百分比。...,可以发现缺失值比例在(0.01%,80%)的列中,除3列数据缺失值在56%以上,其余列数据的缺失值均小于17%,故可以简单认为在此数据集中缺失值在56%以上的数据列提供信息有限,故将缺失百分比56%以上的列数据全部删除...在DataFrame求其一列即Series对象中的均值的方法为mean,众数的方法为mode,中位数的方法为median。 首先是对字符型的填补。...,由此新的DataFrame来计算得到所需的中位数的值,再填补回原数据中。...,而只有较少数据列有缺失的时候,此时使用建模方法进行填充就等于使用别的所有的无缺失值的列来预测该存在缺失值的列,从而就转化为了一个建模与预测的问题。

    4.7K21

    (数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg

    ,用于对单列、多列数据进行批量运算或分组聚合运算,熟悉这些方法后可极大地提升数据分析的效率,也会使得你的代码更加地优雅简洁,本文就将针对pandas中的map()、apply()、applymap()、...2.1 map()   类似Python内建的map()方法,pandas中的map()方法将函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个列的每一个元素建立联系并串行得到结果,譬如这里我们想要得到...2.2 apply()   apply()堪称pandas中最好用的方法,其使用方式跟map()很像,主要传入的主要参数都是接受输入返回输出,但相较于map()针对单列Series进行处理,一条apply...三、聚合类方法   有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...可以注意到虽然我们使用reset_index()将索引列还原回变量,但聚合结果的列名变成红色框中奇怪的样子,而在pandas 0.25.0以及之后的版本中,可以使用pd.NamedAgg()来为聚合后的每一列赋予新的名字

    5.1K60
    领券