在Pandas中,你可以使用sum
函数来按行合计,然后使用div
函数来计算百分比。这里是一个例子:
假设你有一个DataFrame df
,包含多个列,你想计算每行的总和,然后计算每列相对于该行总和的百分比。
import pandas as pd
# 假设这是你的DataFrame
data = {
'A': [10, 20, 30],
'B': [20, 30, 40],
'C': [30, 40, 50]
}
df = pd.DataFrame(data)
# 按行计算总和
df['Total'] = df.sum(axis=1)
# 计算每列相对于行总和的百分比
for column in df.columns[:-1]: # 排除'Total'列
df[column + ' (%)'] = df[column] / df['Total'] * 100
在这个例子中,我们首先计算了每行的总和,并将其作为新列'Total'添加到DataFrame中。然后,我们遍历除了'Total'列以外的每一列,计算该列的值占该行总和的百分比,并将结果作为新列添加到DataFrame中。
请注意,百分比列的名称是通过将原始列名后加上' (%)'来生成的。这样,你就可以清楚地看到每个百分比列对应的原始列。
如果你想要一个更简洁的代码,可以使用apply
函数和lambda表达式:
# 使用apply函数和lambda表达式计算百分比
df_percentage = df.div(df.sum(axis=1), axis=0) * 100
df_percentage['Total'] = df.sum(axis=1)
在这个例子中,我们使用div
函数将DataFrame中的每个元素除以行总和,然后乘以100来计算百分比。最后,我们将行总和作为新列'Total'添加到DataFrame中。